首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MQX在输入引脚上配置中断示例代码/教程

MQX在输入引脚上配置中断示例代码/教程
EN

Stack Overflow用户
提问于 2014-03-18 22:30:19
回答 1查看 1.5K关注 0票数 1

我是freescale MQX的新手,我正在尝试使用MQX函数在输入引脚上设置中断(以防我们想要更改MPU)。我找不到任何好的教程。谁能给我指个方向?谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-03-22 00:20:08

让我们在PTA5的上升沿设置一个中断,好吗?

定义一个宏来表示您的图钉。不是真的有必要,但很有帮助。

代码语言:javascript
复制
#define MY_GPIO_INT_PIN     (GPIO_PORT_A|GPIO_PIN_IRQ_RISING|GPIO_PIN5)

声明一些需要的变量

代码语言:javascript
复制
PORT_MemMapPtr  pctl; 
GPIO_PIN_STRUCT  pins[2];
MQX_FILE_PTR pin_fd;

获取引脚端口的基本指针,并设置适当的多路复用选项(可在芯片参考手册中找到)。

代码语言:javascript
复制
//note: this code should be in init_gpio.c, from your bsp folder.
pctl = (PORT_MemMapPtr) PORTA_BASE_PTR;
/* PTA5 as GPIO (Alt.1)  */
pctl->PCR[5] = PORT_PCR_MUX(1) ;

填充引脚结构的数组。请注意,您可以一次设置多个引脚,并且需要使用GPIO_LIST_END终止阵列,以便驱动程序知道在何处停止。

代码语言:javascript
复制
pins[0] = MY_GPIO_INT_PIN;
pins[1] = GPIO_LIST_END;

作为一个半兼容POSIX的操作系统,几乎所有的东西在MQX上都被当作一个文件来处理。让我们为您的pin打开一个文件处理程序:

代码语言:javascript
复制
pin_fd = fopen("gpio:input", (char*)pins);

检查是否一切顺利

代码语言:javascript
复制
if(NULL == pin_fd){
    //something bad happened, check for error with ferror(fd)
}

现在为您的pin注册回调

代码语言:javascript
复制
void pin_int_callback(void* data){
    //interrupt handle code goes here
}

if(IO_OK != ioctl(pin_fd, GPIO_IOCTL_SET_IRQ_FUNCTION, (void*)pin_int_callback)){
   //something bad happened registering your callback
}

完成了!试着把它们放在一起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22482378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档