我想实现的目的是通过PC上的串口助手给MCU发一个字符,在程序里面可以把这个字符读出来,并且把这个字符付给一个变量,再把这个变量的值付给一个IO口,现在IO口看他的输出波形,不知道这么说你们明不明白,因为刚接触STM32好多地方不懂所以表达的可能也不准确不清楚,找了一个历程,可以实现通过PC给MCU发送字符,MCU在把接收到的字符通过PC上的串口助手显示出来,我就在该程序中串口的接收部分改了一点,程序中的“jieshou”被我定义到了一个IO口,但是串口助手在持续发送,IO口一直是低电平,我也感觉我改的串口接收的这一部分有问题,但是又不知道怎么改才是对的,所以希望大家能给我讲讲该怎么改,其他地方都没改过,之前的程序我也试过了是好的,可以实现PCF发字符给MCU,MCU再将字符返给PC,下面这个是我给的串口中断程序的部分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你这样写的情况是在等待发送完成的时候才会进入for循环赋值语句,如果while语句在判断发送标志位的之前已经发送结束了,就不会进入for循环,IO口自然不会有变化
最好定义变量放在函数开头;
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET)這句后面少了“;”,這句代码可以不要;
看代码你是想把接收到的一个字节按位赋值给一个IO口,但你程序for执行后,IO口的状态就是接收到字节的最低位,你看看你发送的数据最低位是0还是1,如果是0 那么程序现象是正常的, 因为前面的7次电平变化很快 根本看不到;
最后那合成一句多好 jieshou = ((Res << a) & 0x80) >> 7;
一周热门 更多>