今天调试板子的时候一直接着串口调试,之后程序差不多调好了后把串口拔了下来整体调试,然后问题就出现了,程序一个劲的重启,接上Jlink调试发现执行串口每次发送后程序就重启了,每次都是这样,调试了很长时间也没有结果,之后让老师傅过来帮忙。
结果问题出现在串口初始化上,我串口初始化函数使能了接受中断,但是我没有写串口的中断函数,RXD应该死在接收中断上了,真是太大意了!
不过一般规范地写都会定义一个使能标志位,然后像下面那样判断是否定义了使能为 11
2
3
4
5
6
7
8
9
10
11
12
13
//使能接收中断
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启中断
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
TIM4_Init(999,7199); //10ms中断
USART2_RX_STA=0; //清零
TIM4_Set(0); //关闭定时器4