初级会员

- 积分
- 92
- 金钱
- 92
- 注册时间
- 2020-6-22
- 在线时间
- 11 小时
|
1金钱
刚刚入手STM32的本科生,一直用的是MSP430,想用STM32发送数据,接收指令,遇到了一些问题:利用IIC将外部芯片的数据读取到STM32中,再利用STM32串口发送向上位机发送数据(这里用的是原子哥提供的串口助手),然后想让上位机通过串口助手发送指令控制STM32,比如单片机接收到0x01时,向上位机发送数据,接收到0x02时,停止发送数据。在这里就遇到了问题,当单片机不发送数据的时候,完全能够接收到上位机的指令,但是单片机在发送数据的时候,就不能接收到上位机的停止指令了,是不是中断的问题呢?请大佬解答一哈。
附上主函数中的代码:
int main(void)
{
ImpeType impe;
u8 flag=0;
u8 res;
u8 i=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init();
IIC_Init();
uart_init(115200);
LED_Init();
while(1)
{
if(USART_RX_STA&0x8000)
{
if(USART_RX_BUF[0]==0x01)
{
flag=1;
for(i=0;i<3;i++)
{
delay_ms(300);
LED0=0;
delay_ms(300);
LED0=1;
}
}
else if(USART_RX_BUF[0]==0x02)
{
flag=0;
for(i=0;i<3;i++)
{
delay_ms(300);
LED1=0;
delay_ms(300);
LED1=1;
}
}
USART_RX_STA=0;
}
while(flag==1)
{
LED0=0;
LED1=1;
AD5933_FreInit(30000,0);
AD5933_StartOnceTest(&impe,0);
printf("%f",impe.Impedance);
printf("\r\n");
printf("%f\r\n",impe.Phase);
printf("over\r\n\r\n");
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
你的代码有问题,当程序进入 while(flag==1)后,就退不出来了,肯定接收不到串口发送的指令啊, 将while(flag==1)改为 if(flag==1)
|