ek-tm4c123gxl qei 初始化的代码
时间: 2023-07-31 13:12:07 浏览: 144
以下是使用 TivaWare™ 软件包初始化 EK-TM4C123GXL 板上的 QEI 接口的示例代码:
```c
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/qei.h"
int main(void)
{
uint32_t ui32Period;
// 设置系统时钟为 50MHz
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
// 使能 GPIO 和 QEI 模块的时钟
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI0);
// 配置 GPIO 引脚
GPIOPinConfigure(GPIO_PC5_PHA0);
GPIOPinConfigure(GPIO_PC6_PHB0);
GPIOPinTypeQEI(GPIO_PORTC_BASE, GPIO_PIN_5 | GPIO_PIN_6);
// 配置 QEI 模块
QEIConfigure(QEI0_BASE, (QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_NO_RESET | QEI_CONFIG_QUADRATURE | QEI_CONFIG_NO_SWAP), 0xFFFFFFFF);
QEIVelocityConfigure(QEI0_BASE, QEI_VELDIV_1, SysCtlClockGet());
QEIEnable(QEI0_BASE);
// 设置 QEI 的计数周期
ui32Period = SysCtlClockGet() / 2; // 假设计数周期为 0.5 秒
QEIPositionSet(QEI0_BASE, 0);
QEIPositionSet(QEI0_BASE, ui32Period);
while(1)
{
// 在此处添加您的代码
}
}
```
这段代码初始化了 QEI0 模块,并将其连接到 GPIOC 的引脚 5 和 6 上。它还配置了 QEI 模块的计数周期为 0.5 秒。
请注意,此示例仅提供了初始化 QEI 模块的基本代码。您可以根据实际需求添加其他功能和逻辑。
希望这可以帮助到您!如果您有任何进一步的问题,请随时提问。
阅读全文