因为需要用到串口2,所以今天在调试一下!一开始以为很简单,也都自己改着!后来改了几次都没出结果,于是上了论坛查下!
串口2有几点需要注意的(其他吧友也说过啦,我再说一下),如下:
第一,串口2的时钟是在 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
而串口1的时钟是 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
第二点,我们在修改历程经常张冠李戴,比如说
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
void USART2_IRQHandler(void)
int fputc(int ch, FILE *f)
{
while((USART2->SR&0X40)==0);//循环发送,直到发送完毕
USART2->DR = (u8) ch;
return ch;
}
忘改这忘改呐!!!!!
不过我这些还好都有做到,但是还是一直得不到实验现象!我看了几乎论坛中所有关于USART2的帖子,最终从原子哥的一句话得到了答案!!!
注意看下PA2,PA3有没有连接其他外设!然后我马上去翻看板子的原理图:
日狗啊,原来他板子吧PA2连接到了LED灯去了,我心里瞬间一万个草泥马飞过去,LED哪里不能接,你接我亲爱的串口2,简直是浪费!!!!
不想吐槽了!
才怪!不过确实也懂得更多东西,不仅是串口2,顺带蓝牙的程序,GSM的也看一下,学到的还是挺多了!!
希望大家下次再检查程序的同时也要主要自己的硬件连接,不要像我一样被这个小东西卡了1个多小时!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
另外,如果PA2被连接到了LED上,你可以将USART2_TX USART2_RX映射到PD5 PD6上。
一周热门 更多>