问题描述:
最近在做一个关于串口读压力模块压力值的项目,用到的压力模块的基本工作原理为,通过串口向压力模块发送读压力指令"1:R:MRMD:0:0"(字符串),压力模块会返回压力值字符串"1:F:MRMD:101.00:KPA"(非定长字符串),收到压力值字符串后需要对其进行分割,以提取标识位'F'、压力值'101.00',以及压力单位'KPA'。
我做该项目的思路是通过DMA传输的方式将串口接收到的压力字符串从串口数据寄存器传输到内存,通过串口的总线空闲中断(IDLE)判断压力值字符串是否接收完成,若接收完成触发中断程序,在中断程序中对字符串中进行分割并提取具有关键值的子串。
但是通过keil仿真器仿真过程中rxne状态位在接收到字符串后始终不会被置位,导致空闲中断不被响应,最终导致压力字符串没不能被有效处理,刚接触stm32,不知道问题出在哪里,希望前辈能指点一二。
下面是我的程序:
主函数:
void Delay(__IO u32 nCount) /*自定义的延时函数*/
{
for(;nCount!=0;nCount--);
}
void USART_SendChar(USART_TypeDef* USARTx,uint8_t data) /*自定义的串口发送数据函数*/
{
USART_SendData(USARTx,data);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);
}