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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3682|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32串口配置(串口二的配置=初始化+中斷配置+中斷接收函數(shù))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:110875 發(fā)表于 2021-11-1 21:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
繼上貼http://www.zg4o1577.cn/bbs/dpj-213781-1.html,今天發(fā)布STM32的串口2配置程序,話不多說。

1 /*===============================================================================
  2 Copyright:
  3 Version:
  4 Author:   
  5 Date: 2021/11/1
  6 Description:
  7     函數(shù)功能是將接收固定長(zhǎng)度的字符串,并將接收后的字符串通過串口發(fā)送出去
  8 revise Description:
  9 ===============================================================================*/
10 #include "stm32f10x_usart.h"
11 #include "stm32f10x.h"
12 #include "stm32f10x_iwdg.h"
13
14
15 u8 USART2_RX_BUF[250];
16 u8 USART2_RX_CNT=0;
17 u16 USART2_RX_STA=0;       //接收狀態(tài)標(biāo)記   
18
19 void Usart2_Init(u32 bound)
20 {  
21     GPIO_InitTypeDef GPIO_InitStructure;
22     USART_InitTypeDef USART_InitStructure;
23     NVIC_InitTypeDef NVIC_InitStructure;
24     //|RCC_APB2Periph_AFIO
25     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能GPIOA時(shí)鐘
26     RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2時(shí)鐘
27
28     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;    //PA2
29     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //復(fù)用推挽
30     GPIO_Init(GPIOA, &GPIO_InitStructure);
31
32     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
33     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入
34     GPIO_Init(GPIOA, &GPIO_InitStructure);  
35
36     RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE);//復(fù)位串口2
37     RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,DISABLE);//停止復(fù)位
38
39     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)   0-3;
40     NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; //使能串口2中斷
41     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //先占優(yōu)先級(jí)2級(jí)
42     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優(yōu)先級(jí)2級(jí)
43     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
44     NVIC_Init(&NVIC_InitStructure); //根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器
45
46     USART_InitStructure.USART_BaudRate = bound;//波特率設(shè)置
47     USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8位數(shù)據(jù)長(zhǎng)度
48     USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個(gè)停止位
49     USART_InitStructure.USART_Parity = USART_Parity_No;///奇偶校驗(yàn)位
50     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
51     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//收發(fā)模式
52
53     USART_Init(USART2, &USART_InitStructure); ; //初始化串口
54     USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//開啟中斷
55     USART_Cmd(USART2, ENABLE);                    //使能串口
56
57 }
58 /**
59 * USART2發(fā)送len個(gè)字節(jié).
60 * buf:發(fā)送區(qū)首地址
61 * len:發(fā)送的字節(jié)數(shù)(為了和本代碼的接收匹配,這里建議不要超過64個(gè)字節(jié))
62 **/
63 void USART2_Send_Data(u8 *buf,u16 len)
64 {
65     u16 t;
66       for(t=0;t<len;t++)        //循環(huán)發(fā)送數(shù)據(jù)
67     {           
68         while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);      
69         USART_SendData(USART2,buf[t]);
70     }     
71     while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);         
72 }
73 /**
74 * 這也是一個(gè)接收函數(shù),可以用,也可以用下面main函數(shù)的方法調(diào)用
75 * USART2查詢接收到的數(shù)據(jù)
76 * buf:接收緩存首地址
77 * len:讀到的數(shù)據(jù)長(zhǎng)度
78 **/
79 void USART2_Receive_Data(u8 *buf)
80 {
81     u8 rxlen=USART2_RX_CNT;
82     u8 i=0;
83     delay_ms(10);        //等待10ms,連續(xù)超過10ms沒有接收到一個(gè)數(shù)據(jù),則認(rèn)為接收結(jié)束
84     while(rxlen!=USART2_RX_CNT)
85     {
86         rxlen=USART2_RX_CNT;
87         delay_ms(10);
88     }
89         for(i=0;i<(USART2_RX_CNT);i++)
90         {
91             buf[ i] = USART2_RX_BUF[ i];   
92             USART2_RX_BUF[ i] = 0;
93         }        
94         USART2_RX_CNT=0;        //清零
95     
96 }
97
98 void main(void)
99 {
100     Usart2_Init(9600);//串口1波特率設(shè)置為9600
101     while(1)
102     {
103         if(USART2_RX_STA)//數(shù)據(jù)接收完成
104         {
105             USART2_RX_STA=0;            
106             //將接收到的數(shù)據(jù)發(fā)送出去
107             USART2_Send_Data(USART2_RX_BUF,USART2_RX_CNT);//通過串口1將接收到的固定長(zhǎng)度字符發(fā)送出去   
108             USART2_RX_CNT=0;//指針復(fù)位
109         }
110     }   
111 }
112
113
114 void USART2_IRQHandler(void)
115 {
116     u8 res;        
117      if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收到數(shù)據(jù)
118     {         
119         res =USART_ReceiveData(USART2);     //讀取接收到的數(shù)據(jù)        
120         if(USART2_RX_STA==0)
121         {
122             USART2_RX_BUF[USART2_RX_CNT] = res;        //記錄接收到的值   
123             //當(dāng)數(shù)據(jù)結(jié)尾收到0xA0和0xA1代表數(shù)據(jù)接收完成,是一串完整的數(shù)據(jù)
124             if(USART2_RX_BUF[USART2_RX_CNT-1]==0xA0&&USART2_RX_BUF[USART2_RX_CNT]==0xA1)
125                 USART2_RX_STA=1;//表示接收數(shù)據(jù)結(jié)束
126             USART2_RX_CNT++;                        //接收數(shù)據(jù)增加1
127         }
128         }
129     }  
130     //溢出-如果發(fā)生溢出需要先讀SR,再讀DR寄存器則可清除不斷入中斷的問題
131     if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET)
132     {
133         USART_ReceiveData(USART2);
134         USART_ClearFlag(USART2,USART_FLAG_ORE);
135     }
136      USART_ClearFlag(UART2,USART_IT_RXNE); //一定要清除接收中斷   
137 }

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色橹橹欧美在线观看视频高清 | 色吊丝在线 | 国内精品久久影院 | 欧美成人a | 日本久久一区二区三区 | 国产精品视频在线播放 | 2021天天躁夜夜看 | 国产第一亚洲 | 日韩午夜电影在线观看 | 精品欧美一区二区三区久久久 | 不卡在线视频 | 精品国产一区二区三区久久狼黑人 | 欧美日韩成人影院 | 久久国产精品无码网站 | 97精品国产手机 | 97精品国产一区二区三区 | 亚洲精品九九 | 中文字幕在线不卡播放 | 日韩成人在线一区 | 亚洲精品天堂 | 欧美日韩专区 | 国内精品一区二区三区 | 在线免费观看a级片 | 国产精品国产a | 成年人免费看 | 日本中文字幕一区 | 免费黄色av | 99re在线视频 | 成人性视频免费网站 | 亚洲日韩欧美一区二区在线 | 玩丰满女领导对白露脸hd | 日日日干干干 | 日韩免费视频一区二区 | 亚洲精品久久久久久下一站 | 一道本在线 | 中文字幕亚洲欧美日韩在线不卡 | 国产丝袜一区二区三区免费视频 | 91精品国产综合久久久亚洲 | 毛片国产| 亚洲国产成人在线观看 | 国产精品国产成人国产三级 |