⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 EasyARM615在IAR上的实验源代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name:          Main.c
** Last modified Date: 2007-03-24
** Last Version:       1.0
** Description:        Basic experiment of the quadrature encoder 正交编码器的基础实验
** 
**------------------------------------------------------------------------------------------------------
** Created By:         Steven Zhou 周绍刚
** Created date:       2007-04-05
** Version:            1.0
** Descriptions:       The original version 初始版本
**
**------------------------------------------------------------------------------------------------------
** Modified by:        Kang qinhua
** Modified date:      2008.01.19
** Version:            v1.1
** Description:
**
********************************************************************************************************/

#define HWREG(x)   (  *((volatile unsigned long *)(x)) )

#define SYSCTL_RCGC1            0x400fe104  // 运行模式时钟门控寄存器1
#define SYSCTL_RCGC2	    	0x400fe108	// 运行模式时钟门控寄存器2

#define SYSCTL_PERIPH_GPIOC     0x20000004  // GPIO C在系统控制器中的地址
#define SYSCTL_PERIPH_GPIOD     0x20000008  // GPIO D在系统控制器中的地址
#define SYSCTL_PERIPH_QEI       0x10000100  // 正交编码器在系统控制器中的地址

#define GPIO_PORTC_BASE         0x40006000  // GPIO C的基地址
#define GPIO_PORTD_BASE         0x40007000  // GPIO D的基地址
#define GPIO_O_DIR              0x00000400  // 方向寄存器
#define GPIO_O_AFSEL            0x00000420  // 模式选择寄存器

#define QEI_BASE                0x4002C000  // 正交编码器的基地址
#define QEI_O_CTL               0x00000000  // 正交编码器的控制寄存器的偏移地址
#define QEI_O_LOAD              0x00000010  // 正交编码器的装载寄存器的偏移地址
#define QEI_O_SPEED             0x0000001C  // 正交编码器的速度寄存器的偏移地址

#define QEI_CONFIG_CAPTURE_A_B  0x00000008  // A,B通道边沿计数
#define QEI_CTL_ENABLE          0x00000001  // 使能正交编码器
#define QEI_CTL_VELEN           0x00000020  // 使能速度检测功能


/*********************************************************************************************************
** Function name:			main
**
** Descriptions:			Main function of the project 工程的主函数
**
** Input parameters:		None 无
** Returned value:		    None 无
**         
** Used global variables:	None 无
** Calling modules:		    None 无
**                       
**
** Created by:				Steven Zhou 周绍刚
** Created Date:			2007-03-24
**-------------------------------------------------------------------------------------------------------
** Modified by:             Kang qinhua
** Modified date:           v1.1
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int main(void)
{
	unsigned int i;
	
	HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOC & 0x0FFFFFFF;	// 使能PC口外设 
	HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOD & 0x0FFFFFFF;	// 使能PD口外设 
    HWREG(SYSCTL_RCGC1) |= SYSCTL_PERIPH_QEI & 0x0FFFFFFF; 		// 使能正交编码器外设 

    HWREG(GPIO_PORTC_BASE + GPIO_O_DIR)   &= 0xFFFFFFAF;  		// 设置PC4,PC6为输入
	HWREG(GPIO_PORTC_BASE + GPIO_O_AFSEL) |=0x00000050; 		// 选择硬件功能
	HWREG(GPIO_PORTD_BASE + GPIO_O_DIR)   &= 0xFFFFFF7F; 		// 设置PD7为输入     
	HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) |=0x00000080;   		// 选择硬件功能
		     
	HWREG(QEI_BASE + QEI_O_CTL)	|= QEI_CONFIG_CAPTURE_A_B;		// 使用A,B通道共4个边沿计算速度
    HWREG(QEI_BASE + QEI_O_LOAD) = 60000-1;                		// 设置速度检测周期为 0.01秒

	HWREG(QEI_BASE + QEI_O_CTL) |= QEI_CTL_ENABLE;     			// 使能正交编码器  
	HWREG(QEI_BASE + QEI_O_CTL) |= QEI_CTL_VELEN;       		// 使能正交编码器的速度检测功能  
     	         
	while(1)
	{
		i = HWREG(QEI_BASE + QEI_O_SPEED);        				// 读出上一个周期的速度计数值
		i = (i*100*60)/(4*512);                   				// 转化为 转/分钟
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -