电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【STM32F412-DISCO 开发板试用体验】+按键外部中断
【STM32F412-DISCO 开发板试用体验】+按键外部中断
开发
泡沫113355
LV3工程师
| 2017-05-22 16:19:20
浏览量 2383
回复:3
发表新帖
STM32F412-DISCO板载的按键前后左右的4个PIN值不同,而且都可以映射到外部中断。我记得在这F103中所有PIN都支持外部中断,但在F412的启动文件发现只有EXTI0到4还有EXTI15_10,并不是全部支持。不过还好,只有S
EL键PIN0重
合。
我自己编写IRQHandler时发现HAL库中没有提供清中断函数,仔细查了一下发
现HAL库中外部中断是用一个函数将所有的EXTI集中到一起,再通过PIN值来调用我们自己编写回调函数HAL_GPIO_EXTI_Callback(GPIO_Pin)来完成自己的功能。
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
串口输出信息如下
从标准库转向HAL好几天了,终于在外部中断的处理这里发现了他们在思想上的区别,HAL是如何将硬件层隔离,这里上传一份工程,做个纪念。
STM32F412-DISCO板载的按键前后左右的4个PIN值不同,而且都可以映射到外部中断。我记得在这F103中所有PIN都支持外部中断,但在F412的启动文件发现只有EXTI0到4还有EXTI15_10,并不是全部支持。不过还好,只有S
EL键PIN0重
合。
我自己编写IRQHandler时发现HAL库中没有提供清中断函数,仔细查了一下发
现HAL库中外部中断是用一个函数将所有的EXTI集中到一起,再通过PIN值来调用我们自己编写回调函数HAL_GPIO_EXTI_Callback(GPIO_Pin)来完成自己的功能。
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
串口输出信息如下
从标准库转向HAL好几天了,终于在外部中断的处理这里发现了他们在思想上的区别,HAL是如何将硬件层隔离,这里上传一份工程,做个纪念。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
3
yufeng1021
2017-05-31
支持。。。。。。。
0
回复
举报
发布
test12345
2017-05-30
学习一下。
0
回复
举报
发布
chen0000009
2017-05-23
学习一下,我看看哪天也要开搞了
0
回复
举报
发布
×
举报
举报人:
被举报人:泡沫113355
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子