void EXTI4_15_IRQHandler(void) { /* USER CODE BEGIN EXTI4_15_IRQn 0 */ /* USER CODE END EXTI4_15_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); /* USER CODE BEGIN EXTI4_15_IRQn 1 */ /* USER CODE END EXTI4_15_IRQn 1 */ } 这段代码有两个用户自己写的地方,然后我发现把代码写在上面和下面都可以完成中断,然后把随意分割放上面和下面还是可以完成中断操作。。。就郁闷了。。求大神帮忙。中间那句话啥作用和意思啊。。。 |
注释放哪里都无所谓,有没有也无所谓,中间那句代码才是中断调用的处理函数。
建议楼主把强哥的C语言书拿出来再膜拜一遍吧!
已经膜拜了n次了 我知道那只是注释 它是cube生成的代码。我在两行注释中间要填入自己的中断程序。。。
比如 我想要按键中断,按一次键 PB10是LED 亮1秒 我发现下面两种方式都可以达到我的目的 但是哪一种才应该是正确的。。。
eg1.
void EXTI4_15_IRQHandler(void)
{
/* USER CODE BEGIN EXTI4_15_IRQn 0 */
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
delay_ms(1000);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
/* USER CODE END EXTI4_15_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
/* USER CODE BEGIN EXTI4_15_IRQn 1 */
/* USER CODE END EXTI4_15_IRQn 1 */
}
eg2.
void EXTI4_15_IRQHandler(void)
{
/* USER CODE BEGIN EXTI4_15_IRQn 0 */
/* USER CODE END EXTI4_15_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
/* USER CODE BEGIN EXTI4_15_IRQn 1 */
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
delay_ms(1000);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
/* USER CODE END EXTI4_15_IRQn 1 */
}
看来你也是强哥的粉丝啊!
既然你这个2种写法都能达到目的,那就都是正确的,如果把中断中的延时去掉来实现目的应该会更好点吧。
Cube生成的代码之所以有2个用户自己写代码的地方是因为这个中断函数是好几个中断线共用的入口地址,为了使代码清晰明了Cube生成代码时特意添加了中断0开始-中断0结束;中断1开始-中断1结束(其实还应该有好几个这样的注释)说明。
评分
查看全部评分