最近正在学习luminary,用的是周立功的easyArm8962的板子,在qei的实验例程中有这么两句话: SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI);
GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_6, GPIO_DIR_MODE_HW);
GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_7, GPIO_DIR_MODE_HW);//例程中的这句话是什么意思?
前两句我理解,意思是使能正交编码,用的是pc4和pc7,第三局的用途是什么?
附完整代码: int main(void) { unsigned int i; SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); /* 使能PC口外设 */ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); /* 使能PD口外设 */ SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI0); /* 使能正交编码器外设 */ GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_6, /* 选择PC4,PC6硬件功能 */ GPIO_DIR_MODE_HW);
GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, /* 设置PC4强度和类型 */ GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */ GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */ GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_6, /* 设置PC6强度和类型 */ GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */ GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIODirModeSet(GPIO_PORTD_BASE,GPIO_PIN_7,GPIO_DIR_MODE_HW); /* 选择PD7硬件功能 */ QEIConfigure(QEI0_BASE,(QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_NO_RESET | QEI_CONFIG_QUADRATURE | QEI_CONFIG_NO_SWAP), 0); /* 使用A,B通道共4个边沿计算速度*/ QEIVelocityConfigure(QEI0_BASE, QEI_VELDIV_1, 60000); /* 设置速度检测周期为 0.01秒 */
QEIEnable(QEI0_BASE); /* 使能正交编码器 */ QEIVelocityEnable(QEI0_BASE); /* 使能正交编码器的速度检测功能*/ while(1){ i = QEIVelocityGet(QEI0_BASE); /* 读出上一个周期的速度计数值 */ i = (i*100*60)/(4*512); /* 转化为 转/分钟 */ } }
|