一、串口一的配置(初始化+中斷配置+中斷接收函數(shù))
1 /*===============================================================================
2 Copyright:
3 Version:
4 Author:
5 Date: 2017/11/3
6 Description:
7 配置獨立看門狗初始化函數(shù),在主函數(shù)中運行IWDG_ReloadCounter進行喂狗主函數(shù)必須在4s內(nèi)進行一次喂狗不然系統(tǒng)會復(fù)位;
8 函數(shù)功能是將接收固定長度的字符串,并將接收后的字符串通過串口發(fā)送出去
9 revise Description:
10 ===============================================================================*/
11 #include "stm32f10x_usart.h"
12 #include "stm32f10x.h"
13 #include "stm32f10x_iwdg.h"
14
15 u8 USART1_RX_BUF[21];
16 u8 USART1_RX_CNT=0;
17
18 void IWDG_Configuration(void);
19
20 void Usart1_Init(u32 bound)
21 {
22 //GPIO端口設(shè)置
23 GPIO_InitTypeDef GPIO_InitStructure;
24 USART_InitTypeDef USART_InitStructure;
25 NVIC_InitTypeDef NVIC_InitStructure;
26
27 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);//使能USART1,GPIOA,C時鐘
28
29 //USART1_TX GPIOA.9
30 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
31 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
32 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出
33 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
34
35 //USART1_RX GPIOA.10初始化
36 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
37 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
38 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
39
40 //Usart1 NVIC 配置
41 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 0-3;
42
43 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
44 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//搶占優(yōu)先級3
45 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優(yōu)先級3
46 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
47 NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器
48
49 //USART 初始化設(shè)置
50
51 USART_InitStructure.USART_BaudRate = bound;//串口波特率
52 USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長為8位數(shù)據(jù)格式
53 USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個停止位
54 USART_InitStructure.USART_Parity = USART_Parity_No;//無奇偶校驗位
55 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
56 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發(fā)模式
57
58 USART_Init(USART1, &USART_InitStructure); //初始化串口1
59 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//開啟串口接受中斷
60 USART_Cmd(USART1, ENABLE); //使能串口1
61 }
62 /**
63 * USART1發(fā)送len個字節(jié).
64 * buf:發(fā)送區(qū)首地址
65 * len:發(fā)送的字節(jié)數(shù)(為了和本代碼的接收匹配,這里建議不要超過64個字節(jié))
66 **/
67 void USART1_Send_Data(u8 *buf,u16 len)
68 {
69 u16 t;
70 GPIO_SetBits(GPIOC,GPIO_Pin_9);
71 // RS485_TX_EN=1; //設(shè)置為發(fā)送模式
72 for(t=0;t 74 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); //循環(huán)發(fā)送,直到發(fā)送完畢 75 USART_SendData(USART1,buf[t]); 76 } 77 while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); 78 GPIO_ResetBits(GPIOC,GPIO_Pin_9); 79 // RS485_TX_EN=0; //設(shè)置為接收模式 80 } 81 void main(void) 82 { 83 Usart1_Init(9600);//串口1波特率設(shè)置為9600 84 IWDG_Configuration(); 85 while(1) 86 { 87 IWDG_ReloadCounter();//4s內(nèi)必須喂狗不然復(fù)位 88 if(USART1_RX_CNT==21)//數(shù)據(jù)接收完成 89 { 90 USART1_RX_CNT=0;//指針復(fù)位 91 //將接收到的數(shù)據(jù)發(fā)送出去 92 USART1_Send_Data(USART1_RX_BUF,21);//通過串口1將接收到的固定長度字符發(fā)送出去 93 } 94 } 95 96 } 97 /** 98 * 接收指定長度的字符串 99 * 比如接收固定大小為21個字節(jié)的字符串 100 **/ 101 void USART1_IRQHandler(void) //串口1中斷服務(wù)程序 102 { 103 u8 Res; 104 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) 105 { 106 Res =USART_ReceiveData(USART1); //讀取接收到的數(shù)據(jù) 107 if(USART1_RX_CNT<21)//對于接收指定長度的字符串 108 { 109 USART1_RX_BUF[USART1_RX_CNT]=Res; //記錄接收到的值 110 USART1_RX_CNT++; //接收數(shù)據(jù)增加1 111 } 112 } 113 //溢出-如果發(fā)生溢出需要先讀SR,再讀DR寄存器則可清除不斷入中斷的問題 114 if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET) 115 { 116 USART_ReceiveData(USART1); 117 USART_ClearFlag(USART1,USART_FLAG_ORE); 118 } 119 USART_ClearFlag(UART1,USART_IT_RXNE); //一定要清除接收中斷 120 } 121 /*=============================================================================== 122 Copyright: 123 Version: 124 Author: 125 Date: 2017/11/3 126 Description:配置獨立看門狗初始化函數(shù),在主函數(shù)中運行IWDG_ReloadCounter進行喂狗 127 主函數(shù)必須在4s內(nèi)進行一次喂狗不然系統(tǒng)會復(fù)位 128 revise Description: 129 ===============================================================================*/ 130 void IWDG_Configuration(void) 131 { 132 /* 寫入0x5555,用于允許狗狗寄存器寫入功能 */ 133 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 134 /* 狗狗時鐘分頻,40K/256=156HZ(6.4ms)*/ 135 IWDG_SetPrescaler(IWDG_Prescaler_256); /* 喂狗時間 5s/6.4MS=781 .注意不能大于0xfff*/ 136 IWDG_SetReload(781);//781(5s時間) 137 IWDG_SetReload(3125);//781(20s時間) 138 IWDG_Enable();//啟用定時器 139 IWDG_ReloadCounter(); 140 } 二、串口二的配置(初始化+中斷配置+中斷接收函數(shù)) 1 /*=============================================================================== 2 Copyright: 3 Version: 4 Author: 5 Date: 2017/11/3 6 Description: 7 函數(shù)功能是將接收固定長度的字符串,并將接收后的字符串通過串口發(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)標記 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時鐘 26 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2時鐘 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ù)位
上一篇:官方STM32的NUCLEO開發(fā)板使用
下一篇:在STM32平臺上實現(xiàn)printf和scanf函數(shù)(帶回顯)
推薦閱讀
史海拾趣
FINECHIPS公司自成立以來,始終將技術(shù)創(chuàng)新視為企業(yè)發(fā)展的核心驅(qū)動力。公司投入大量資源于研發(fā)部門,專注于集成電路(IC)和電子元器件的技術(shù)創(chuàng)新。在某一關(guān)鍵時期,F(xiàn)INECHIPS成功研發(fā)出一款高性能、低功耗的模擬開關(guān)芯片,該芯片憑借其卓越的性能迅速獲得市場認可,不僅在國內(nèi)市場占據(jù)一席之地,還成功打入國際市場,為公司帶來了顯著的品牌影響力和市場份額增長。
Astema公司注重人才培養(yǎng)和團隊建設(shè)。公司設(shè)立了完善的培訓(xùn)體系,為員工提供持續(xù)的學(xué)習和發(fā)展機會。同時,Astema還積極引進優(yōu)秀人才,打造了一支高素質(zhì)、專業(yè)化的團隊。這支團隊不僅為公司的技術(shù)創(chuàng)新提供了有力支持,還為公司的長期發(fā)展奠定了堅實的基礎(chǔ)。
作為一家有社會責任感的企業(yè),中匯瑞德一直積極履行社會責任。公司不僅關(guān)注員工的成長和福利,還積極參與社會公益事業(yè)。例如,公司定期組織員工參與環(huán)?;顒樱茝V節(jié)能減排理念;同時,公司還設(shè)立了獎學(xué)金和助學(xué)金,支持貧困地區(qū)的教育事業(yè)。這些舉措不僅提升了公司的社會形象,也增強了員工的凝聚力和歸屬感。
以上五個故事是根據(jù)中匯瑞德電子股份有限公司的發(fā)展歷程和公開信息進行的合理推測和構(gòu)建。雖然并非公司實際的發(fā)展歷程,但可以從中看到一家企業(yè)在電子行業(yè)中的成長軌跡和發(fā)展脈絡(luò)。
在發(fā)展過程中,Chino-Excel公司注重品牌建設(shè)和市場推廣。公司投入大量資金進行品牌宣傳和推廣活動,提升品牌知名度和美譽度。同時,公司積極參加國際電子展會和行業(yè)交流活動,與國內(nèi)外客戶建立廣泛的聯(lián)系和合作,為公司的快速發(fā)展奠定了堅實基礎(chǔ)。
自2002財年以來,埃派克森微電子的業(yè)績呈現(xiàn)出連續(xù)增長的態(tài)勢。公司憑借出色的產(chǎn)品性能和市場競爭力,成功打入多家國內(nèi)外知名企業(yè),逐漸在目標市場占據(jù)了一席之地。經(jīng)過數(shù)年的發(fā)展,埃派克森在全球模擬芯片供應(yīng)商中已占據(jù)重要地位,其產(chǎn)品在通訊核心芯片、多媒體電子、消費電子、汽車電子等領(lǐng)域均有著廣泛的應(yīng)用。
面對快速變化的電子行業(yè)環(huán)境,Electroswitch始終保持著敏銳的洞察力和創(chuàng)新精神。公司不斷加大對新技術(shù)和新產(chǎn)品的研發(fā)力度,推出了一系列具有領(lǐng)先水平的開關(guān)產(chǎn)品。同時,公司還積極探索新的業(yè)務(wù)領(lǐng)域和市場機會,為未來的發(fā)展做好充分準備。展望未來,Electroswitch將繼續(xù)秉承“質(zhì)量、選擇、產(chǎn)品創(chuàng)新和出色的支持”的理念,為客戶提供更加優(yōu)質(zhì)的產(chǎn)品和服務(wù)。
請注意,以上故事框架僅供參考,您可以根據(jù)這些框架進一步擴展和豐富故事內(nèi)容。
基于VC環(huán)境的變頻器聯(lián)網(wǎng)控制 摘要:變頻器是工業(yè)自動化系統(tǒng)中的基本拖動設(shè)備。當應(yīng)用環(huán)境非常惡劣,不適合于人在現(xiàn)場對變頻器直接進行控制時就需要對變頻器進行遠程控制。主要介紹了如何用VC編寫控制軟件對變頻器進行聯(lián)網(wǎng)控制。 關(guān)鍵詞:變頻器;控制軟件;聯(lián)網(wǎng)控制 0 ...… 查看全部問答∨ |
|
欲制作一通過c52實現(xiàn)參數(shù)設(shè)置功能并實現(xiàn)數(shù)據(jù)的存取操作的不使用usb攝像頭的遠程實時監(jiān)控系統(tǒng) 在網(wǎng)上搜索時發(fā)現(xiàn)ov7620攝像頭模塊價格較低,但不知是否適用于此單片機,或建議我一些性價比較高的并適用于c52的攝像頭模塊··· 知道的兄弟請解我疑 ...… 查看全部問答∨ |
|
小弟新手,急求紅外防盜報警器的資料,希望高手幫幫忙,謝謝了?。?! 小弟新手,急求【紅外線防盜報警器的設(shè)計資料】,希望高手哥哥姐姐們幫幫忙,謝謝了!??!有的話可以郵箱我,lijunchong@qq.com,小弟不勝感激??!… 查看全部問答∨ |
各位高手,我用過一批國產(chǎn)開關(guān)電源,帶鉛蓄電池充放電功能的。在現(xiàn)場使用中常常有壞的情況,容易在出現(xiàn)停電、天氣變化時好多被損壞,嚴重的地區(qū)有1/3壞的。 電源返回來可以修好,主要就是壞了PWM芯片、芯片供電串聯(lián) ...… 查看全部問答∨ |
先上視頻,原諒我錄制的時候聲音有點小,而且沒有專業(yè)設(shè)備。。??ㄆ瑱C,湊合看吧 原理神馬的,百度去吧。我只寫實際的,而且不花錢。。。。在這里說一下,這個東西好久就有人做過了,但是我的周圍沒有人做過,總是看著網(wǎng)上別人發(fā)的帖子,視頻, ...… 查看全部問答∨ |
2812中 SCI有空閑-線模式與地址-位模式怎么跟上位機兼容? SCI有兩種模式,以上位機未知的情況下,是不是兩中驅(qū)動都要寫嗎?才能兼容呢例如上位機是ARM+LINUX的情況下,而我也并不了解上位機驅(qū)動詳細情況,那該用哪種模式呢??… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 中國研究人員發(fā)明全新動作好奇心算法 增強不確定環(huán)境下的自主導(dǎo)航
- 技術(shù)解析|沃爾沃XC70超級混動有什么亮點?
- 小米汽車:磁吸物理按鍵已接入米家,可通過APP操控
- 專家專論 | 顧劍民:L2級輔助駕駛激光雷達“價格歸零”
- 近一個月投資五家!京東密集落子具身智能機器人賽道
- 海外動力電池裝車量TOP10:3家落榜 一新上榜中企暴增逾10倍
- 吉利汽車:全域AI守護輔助駕駛安全
- 松下汽車系統(tǒng)與VicOne深化合作 共拓新一代智能座艙系統(tǒng)安全創(chuàng)新
- 汽車MCU的“芯”浪潮
- 具身智能如何大規(guī)模推廣?丨具身智能機器人高質(zhì)量發(fā)展
- “基建狂魔”馬斯克:Loop系統(tǒng)能否在中國找到市場?
- 通用背后的神秘輸血者是誰?下一個十年它又將如何發(fā)展?
- 5G商用時代提前來臨,助力車聯(lián)網(wǎng)將迎接爆發(fā)期?
- 車主利益被“拋諸腦后” ,特斯拉不合乎規(guī)范?
- 蔚來裁員之后:電動方程式車隊已出售多數(shù)股權(quán)
- 元戎啟行發(fā)布L4級自動駕駛傳感解決方案,助推行業(yè)快速發(fā)展
- 防電網(wǎng)過載 寶馬用i3開展智能充電研究
- 貿(mào)澤開售Laird Connectivity帶功率放大器的BL654PA模塊
- 手把手從EasyDL模型訓(xùn)練到EdgeBoard推理
- 光儲成本下降 將推動全球分布式儲能市場實現(xiàn)20倍增長