中级会员
 
- 积分
- 216
- 金钱
- 216
- 注册时间
- 2015-1-28
- 在线时间
- 29 小时
|
10金钱
求助各路大神,最近买了一块电量检测模块,要求STM32给这个模块发送指令,模块就会将电压和电流发送回来,我用串口2接收和发送,代码如下,但是必须要半秒给检测模块发送一次指令,模块才会回复一次数据,不加延迟的时候,代码可以接收和发送,但由于没有延时,所以只能接收一次,如果加上延时,则将串口2的接收的数据通过串口1打印的时候,就只打印第一个字节,后面的就都打印不出来了,请各位大神帮忙看一下有什么解决办法,十分感谢!!!!
if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) != RESET)
{
static int k = 0;
RxBuf1[k]=USART_ReceiveData(USART2); //USART1->DR;
//TxBuf1[k]=RxBuf1[k];
USART_SendData(USART1, RxBuf1[k]);
k++;
k = k%8;
}
delay_ms(50);
electricity_Init(); //发送命令给电源模块
delay_us(200);
电源命令:
USART2_SendByte(0x01);
delay_us(2);
USART2_SendByte(0x03);
delay_us(2);
USART2_SendByte(0x00);
delay_us(2);
USART2_SendByte(0x48);
delay_us(2);
USART2_SendByte(0x00);
delay_us(2);
USART2_SendByte(0x05);
delay_us(2);
USART2_SendByte(0x05);
delay_us(2);
USART2_SendByte(0xdf);
|
最佳答案
查看完整内容[请看2#楼]
原子哥,我解决了,是因为上次的数据还没发送完,下次的数据就又已经到了,我给这个模块命令加了一个if(k=15),就正常了,感谢原子哥
|