久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2200|回復: 0
打印 上一主題 下一主題
收起左側

STM32單片機串口接收一幀數據

[復制鏈接]
跳轉到指定樓層
樓主
ID:302293 發表于 2021-6-24 17:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
串口接收數據幀,可以做通信協議
  1. #include "sys.h"
  2. #include "usart.h"
  3. #define  len        5 //數組長度
  4. #define a PCout(13)
  5. u8 rx_buff[8];//接收緩存
  6. u8 rx_done =0;//接收完成標志
  7. u8 rx_cnt=0;//接收數據長度

  8. u8 rx3_cont=0;
  9. u8 rx3_done=0;
  10. u8 rx_data[7];//復位與步進接收緩沖區數據

  11. u8 stop_data[7];
  12. u8 num=0;     // 字節數
  13. u8 buf[5];        //接收緩沖,最大9個字節.
  14. void  MAX485_Config(void)
  15. {

  16.   GPIO_InitTypeDef GPIO_InitStructure;
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  18. //        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  19.   GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13;
  20.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  21.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  22.   GPIO_Init(GPIOC, &GPIO_InitStructure);
  23. a=1;
  24. }        


  25. void USART1_Config(void)
  26. {
  27. GPIO_InitTypeDef  GPIO_InitStructure;
  28. USART_InitTypeDef USART_InitStructure;
  29. NVIC_InitTypeDef NVIC_InitStructure;
  30. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能串口GPIO的時鐘
  31. RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能串口外設的時鐘
  32. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//將USART1 Tx的GPIO配置為推挽復用模式
  33. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  34. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  35. GPIO_Init(GPIOA,&GPIO_InitStructure);
  36. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//將USART1 Rx的GPIO配置為浮空輸入模式
  37. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  38. GPIO_Init(GPIOA,&GPIO_InitStructure);
  39. USART_InitStructure.USART_BaudRate=115200;//配置波特率115200
  40. USART_InitStructure.USART_WordLength=USART_WordLength_8b;//配置數據字長8bit
  41. USART_InitStructure.USART_StopBits=USART_StopBits_1;//配置停止位1bit
  42. USART_InitStructure.USART_Parity=USART_Parity_No;//校驗位無
  43. USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流控制無
  44. USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//同時收發模式
  45. USART_Init(USART1,&USART_InitStructure);//完成串口的初始化配置

  46. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//嵌套向量中斷控制器組選擇
  47. NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//配置USART為中斷源
  48. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶斷優先級
  49. NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//子優先級
  50. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能中斷
  51. NVIC_Init(&NVIC_InitStructure);//初始化配置NVIC
  52. USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能串口接收中斷
  53. //USART_ITConfig(USART1,USART_IT_IDLE,ENABLE);//空閑中斷使能
  54. USART_Cmd(USART1,ENABLE);
  55. }

  56.         
  57.         
  58. void USART1_IRQHandler(void)
  59. {

  60.    u8 res;
  61. if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//接收到一個字節,進入一次接收中斷
  62. {
  63. USART_ClearITPendingBit(USART1,USART_IT_RXNE);//清除接收中斷標志
  64.          
  65.     res=USART_ReceiveData(USART1);//將接收的數據存入rx_buff中
  66. if(num>0)
  67.                                         {
  68.                                                 buf[num]=res;
  69.                                                 num++;
  70.                                         }
  71.                                         else if (res==0xc1)                // 包頭
  72.                                         {
  73.                                                 buf[0]=0xc1;//前面寫進,后面才能讀
  74.                                                  num=1;
  75.                                         }
  76.                                         if(num>=len)               
  77.                                         {
  78.                                                 num=0;
  79.                                                 if(buf[(len-1)]==0x0d)         // 判斷包尾
  80.                                                 {
  81.                if(buf[0]==0xc1) a=0;
  82.                else
  83.                 a=1;                                                                 

  84.      if(buf[1]==5)
  85.                  {
  86.                    a=1;
  87.                  }


  88. }
  89. }
  90. }
  91. }

復制代碼


評分

參與人數 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜激情免费 | 中文字幕成人在线 | 久久91 | 成人区精品一区二区婷婷 | 伊人伊成久久人综合网站 | 欧美极品一区二区 | 精品亚洲二区 | 免费色网址 | avmans最新导航地址 | 人操人免费视频 | 久久国产一区二区三区 | 国产精品亚洲综合 | 毛片a级| 精品成人av | 日韩无| 久久久视 | 久99久视频 | 国产在线视频一区 | 久久精品91久久久久久再现 | 国产1区在线 | 一色一黄视频 | 人人人人干| 美女视频.| 日日干夜夜操 | 久久美女网| 在线播放一区二区三区 | 久久一区二区三区免费 | 在线免费中文字幕 | 成年女人免费v片 | 国产日韩一区二区三免费高清 | 欧美性极品xxxx做受 | 精品视频一区二区三区在线观看 | 国产性色视频 | 成人做爰www免费看视频网站 | 国产成人精品一区二区三区在线 | 毛片a级毛片免费播放100 | 女同久久另类99精品国产 | 国产精品夜夜春夜夜爽久久电影 | 国产精品一区二区三区免费观看 | 久久不卡区 | 一级黄色片美国 |