“线程:测试, SysBIOS, EK-TM4C1294XL”中讨论的其它部件
我目前没有测试 IRQ 的好方法,所以我想问一个问题,这是否是最佳方法,至少可以对仅使用 IRQ 针脚 D6的 IRQ 进行编程。 在端口 D 上,我有2个输入引脚(D4和 D6),我只想中断引脚 D6而不是 D4。 这些问题更像是代码审查问题的本质。
我将使用具有 CCS 6.1.2和 TIRTOS 2.16.0.08的 TM4C1294NCPDT。
下面是我目前拥有的代码:
#define port_D_in_pins (GPIO _PIN_4 + GPIO _PIN_6)
使 initPort_D 无效(void)
{
无符号长端口= GPIO _PORTD_BASE;
HWI_HANDLE myHWi;
哈维·帕拉姆 ·哈维·帕拉姆;
ERROR_Block EB;
SysPeripheralEnable(端口);//启用端口
small_delay;//调用 SystlPeripheralEnable()时,需要一个小的延迟才能使用设备。
//配置输入
ROM_GPIODirModeSet (端口,端口_D_IN_Pins,GPIO _DIR_MODE_IN);
MAP_GPIOPadConfigSet (端口,端口_D_IN_Pins,GPIO 强度_2mA,GPIO 引脚_TY_STD_WPU);
//定义引脚 D6上的输入 IRQ
GPIOIntEnable (端口,GPIO _INT_PIN_6);//从 TivawareDoc 启用引脚6上的中断
GPIOIntTypeSet (端口,GPIO _INT_PIN_6,GPIO 下降边缘);// 从 TivawareDoc 将 IRQ 定义为下降边缘
ERROR_INIT(&E);
HWI_Params_init(&hwParams);
hwiparams.arg = 10;// pass 函数一个10的参数,只是因为…。
hwiparams.enableInt = true; //默认情况下启用 IRQ。
myHWi = HWI_CREATE (INT_GPIOD_TM4C129,portD_IntHandler,&hwiparams,&EB);//将 IRQ INT_GPIOD_TM4C129 (19)与 TI_RTOC 2.0文档的回调函数 portD_IntHandler()相关联
IF (NULL == myHWi)
{
printf (“为端口 D\n 安装 IRQ %d 时出错”,INT_GPIOD_TM4C129);
}
否则
{
printf ("为 端口 D\n",INT_GPIOD_TM4C129安装 IRQ %d 的正常");
}
GPIO 启用 Int (GPIO_INT_PIN_6); );//不需要,因为 IRQ 由 hwiparams.enableInt = true;
HWI_enableInterrupt (INT_GPIOD_TM4C129); //不需要,因为 IRQ 由 hwParams.enableInt = true;
}
空端口 D_IntHandler (UArgarg)
{
静态 int intCounter=0;
system_printf ("portD_Intfied Handler %d 次\n",intCounter++);
}
我似乎正在混合一群来自 BIOS 用户指南的高级调用,如 HwI_create(),以及来自蒂瓦夫的较低级调用 GPIOIntEnable()和 GPIOIntTypeSet ()。 这看起来是否能满足我的需要,因为 D4只是我刚才读取的标准输入引脚,而引脚 D6是一个输入引脚,当它变低时会生成 IRQ? 我认为我无法获得 精确控制 ,只能使用 TI-RTOS API 将引脚 D6配置为 IRQ,而 D4仅配置为输入引脚。
感谢您的任何建议,
道格


