你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
请教大家一下Cube 生成代码,中断函数的写法
[复制链接]
咱﹑旳青春
提问时间:2015-4-28 08:55 /
最近在学习使用 Cube 刚上手,就碰到这样一个问题, 如果我有4个按键,都是通过中断来检测的,那这样我需要有4个中断函数,但是 Cube生成的代码,都去调用 callback 了, 我向请问下我这种情况,代码应该怎么写? 写在哪里? 怎么去判断是哪个按键来的中断?
赞
0
收藏
0
评论
5
分享
发布时间:2015-4-28 08:55
举报
请先
登录
后回复
5个回答
咱﹑旳青春
回答时间:2015-4-28 09:09:48
a0a.1 32b0c
我想了一个方法,请大家看一下, 因为都是调用的 callback 函数, 所以我在主函数里面写了 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin), 然后在这个函数里面去判断是哪个按键来的中断, 再去进行相应的处理。 但是问题又来了, 如果我 PA10 和 PB 10 产生的中断都是 EXTI10 这个我就没办法判断了。
代码如下:/* USER CODE BEGIN 4 */
void USER_EXTI_S1(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
}
void USER_EXTI_S2(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
}
void USER_EXTI_S3(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_7);
}
void USER_EXTI_S4(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_PIN_0 == GPIO_Pin)
{
USER_EXTI_S1();
}
if(GPIO_PIN_1 == GPIO_Pin)
{
USER_EXTI_S2();
}
if(GPIO_PIN_2 == GPIO_Pin)
{
USER_EXTI_S3();
}
if(GPIO_PIN_10 == GPIO_Pin)
{
USER_EXTI_S4();
}
}
/* USER CODE END 4 */
赞
0
评论
回复
支持
反对
庸浅的小羊羔
回答时间:2015-4-29 21:28:33
a0a.1 32b0c
“PA10 和 PB 10 产生的中断都是 EXTI10”会这样吗?
赞
0
评论
回复
支持
反对
colin2135
回答时间:2015-4-30 09:20:48
a0a.1 32b0c
这个问题手册上已经写的很清楚了。
赞
0
评论
回复
支持
反对
党国特派员
回答时间:2015-4-30 09:46:41
a0a.1 32b0c
colin2135 发表于 2015-4-30 09:20
这个问题手册上已经写的很清楚了。
这才是正解。。。
赞
0
评论
回复
支持
反对
stary666
回答时间:2015-4-30 12:44:53
a0a.1 32b0c
自己写就行
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
代码如下:/* USER CODE BEGIN 4 */
void USER_EXTI_S1(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);
}
void USER_EXTI_S2(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
}
void USER_EXTI_S3(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_7);
}
void USER_EXTI_S4(void)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_PIN_0 == GPIO_Pin)
{
USER_EXTI_S1();
}
if(GPIO_PIN_1 == GPIO_Pin)
{
USER_EXTI_S2();
}
if(GPIO_PIN_2 == GPIO_Pin)
{
USER_EXTI_S3();
}
if(GPIO_PIN_10 == GPIO_Pin)
{
USER_EXTI_S4();
}
}
/* USER CODE END 4 */
这才是正解。。。