完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有时候供电不足也会死循环的
|
|
|
|
您是中断哪里判断有问题了 能看代码吗
|
|
|
|
int main(void) { RCC_Configuration(); delay_init(72); GPIO_Configuration(); USART_Configuration(); GPIO_SetBits(GPIOB,GPIO_Pin_0); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); delay_ms(500); GPIO_ResetBits(GPIOB,GPIO_Pin_0); NVIC_Configration(); while(1) { GPIO_SetBits(GPIOB,GPIO_Pin_1); delay_ms(200); GPIO_ResetBits(GPIOB,GPIO_Pin_1); delay_ms(200); } } / * Function Name : USART2_IRQHandler * Description : This function handles USART2 global interrupt request. * Input : None * Output : None * Return : None / void USART2_IRQHandler(void) { static unsigned char dat; dat = USART_ReceiveData(USART2); USART_SendData(USART2,dat); USART_ClearFlag(USART2,USART_FLAG_CTS); USART_ClearFlag(USART2,USART_FLAG_LBD); USART_ClearFlag(USART2,USART_FLAG_TC); USART_ClearFlag(USART2,USART_FLAG_RXNE); } |
|
|
|
先关掉中断,串口中断优先级设置完再打开串口中断。
|
|
|
|
嗯,所以我最后的结论就是这样的。上面的代码是故意最后设置优先级,目的就是要说明这么做会引起死机,事实上我很少看到有论坛讨论过这个问题,且发现有很多人的代码并没有在意这种顺序,因为一般情况下并不容易发现。
|
|
|
|
1) 串口参数初始化(波特率/停止位等), 并使能串口。
2)使能串口和 GPIO 口时钟。 3) GPIO 口初始化设置(速度,上下拉等)以及复用映射配置。 4)开启串口相关中断,配置串口中断优先级。 5)编写中断服务函数。 6) 串口数据接收和发送。 以上是我从STM32开发datesheet中里面写的串口中断编程步骤,没毛病,看到你的步骤不是按照这样配。就出现死机 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2136 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1970 浏览 3 评论
4566 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2116 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2629 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 14:06 , Processed in 0.852111 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号