金牌会员
 
- 积分
- 1049
- 金钱
- 1049
- 注册时间
- 2016-9-3
- 在线时间
- 158 小时
|
3金钱
本帖最后由 午夜狼嚎 于 2018-7-7 15:42 编辑
单片机:STM32F103C8T6,在原子大哥例程上改的
问题:用串口调试助手将APP程序发送后,单片机只能重复接收到第一个字节,也就是在USART_RX_BUF数组里存的全是APP程序的第一个字节
当我把程序中的USART_RX_CNT=0;注释掉后,就没问题了。我能看懂这个程序,也觉得没问题,但就是出现了这样的现象,请问是我哪里设置有问题还是怎么回事?
程序如下:
void USART1_IRQHandler(void)
{
u8 res;
res=USART_ReceiveData(USART1);
if(USART_RX_CNT<USART_REC_LEN)
{
USART_RX_BUF[USART_RX_CNT]=res;
USART_RX_CNT++;
}
}
u16 oldcount=0;
u16 applenth=0;
if(USART_RX_CNT)
{
if(oldcount==USART_RX_CNT)
{
applenth=USART_RX_CNT;
oldcount=0;
USART_RX_CNT=0;
}
else
oldcount=USART_RX_CNT;
}
|
最佳答案
查看完整内容[请看2#楼]
你每次去判断当前接收的量和前一次的量比较当然要加上一定的延时,或者说超时:即当前接收量等于前一次接收量且已经超时则认为接收完成
|