STM32F103串口问题求助 (新手请教不胜感激)

2019-07-21 03:50发布

1. 本人手中有一块STM32F103VET6的板子,一个串口输出的传感器YQ(波特率9600,每秒输出8个字节的数据,例如:FF 86 00 B1 00 00 00 7A)
2.希望把标注红 {MOD}的字节提取出来并转换成十进制数值,通过串口1打印到电脑串口调试助手!
3.如何编程实现以上要求,请各位老师指教,感谢!!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
nashui_sx
1楼-- · 2019-07-21 08:59
本帖最后由 nashui_sx 于 2019-3-22 17:16 编辑

你就不能够贴吧搜索下吗 前两天有人问过一模一样的 我给他改好了http://www.openedv.com/forum.php?mod=viewthread&tid=289686
Cyclone
2楼-- · 2019-07-21 13:05
nashui_sx 发表于 2019-3-22 16:59
你就不能够贴吧搜索下吗 前两天有人问过一模一样的 我给他改好了http://www.openedv.com/forum.php?mod=vie ...

大哥,看了你二楼的回复啊,程序串口无打印输出啊!!!!
1599064432
3楼-- · 2019-07-21 16:20
Cyclone 发表于 2019-3-26 09:18
大哥,看了你二楼的回复啊,程序串口无打印输出啊!!!!

你可以重定向,用pintf输出  以%d的形式
1599064432
4楼-- · 2019-07-21 19:11
 精彩回答 2  元偷偷看……
Cyclone
5楼-- · 2019-07-21 19:41
1599064432 发表于 2019-3-26 09:55
我前几周用的是攀藤PM2.5传感器, 和你这差不多

是改以下部分吗?
while(1)
                {               
                                if( USART_RX_STA&0x8000)
                                {                                       
                                        if(USART_RX_BUF[0]==0xff)
                                        {
                                                 if(USART_RX_BUF[USART_RX_STA&0x3fff-1]==FucCheckSum(USART_RX_BUF,USART_RX_STA&0x3fff))//校验
                                                 {
                                                                        if(USART_RX_BUF[1]==0x86)//处理命令
                                                                        {

                                                                    printf("nongdu=%d ",USART_RX_BUF[2]*256+USART_RX_BUF[3]);
                                                                  }
                                                                  //...
                                                 }
                                               
                                        }                                               
                                        USART_RX_STA=0;
                                }

你的程序好了吗?可以参考下吗?
1599064432
6楼-- · 2019-07-22 00:13
Cyclone 发表于 2019-3-26 10:08
是改以下部分吗?
while(1)
                {               

int main()
{
  pms5003_config();
  usart_config();
  SystemInit();
  
  int PM2_5;
  
  while(1)
  {
    while(data_cnt == 32)
    {
      PM2_5 = (int)data_buffer[12] * 256 + (int)data_buffer[13];  //PM2.5
      //char buffer[100];
      //sprintf(buffer,"PM2.5 is %d ug/m3 ", PM2_5);
      printf("PM2.5 is %d ug/m3 ", PM2_5);
      //usart_send_data(USART3, (uint8_t *)buffer, strlen(buffer));
      //usart_send_data(USART3,data_buffer ,32);
      //USART_SendData(USART3,PM2_5);
      USART_ClearITPendingBit(USART3,USART_IT_RXNE);     //清除发送完成标志位
      
      if(data_cnt >= 32)
      {
        data_cnt = 0;
      }
    }
  }
}

一周热门 更多>