娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月19日(星期一)

2018年05月19日 | STM32單片機(3) 串口中斷通信

發布者:大樹下的大白菜y 來源: eefocus關鍵字:STM32  單片機  串口中斷通信 手機看文章 掃描二維碼
隨時隨地手機看文章

注:使用普中科技開發板測試時,需要拔掉Boot1短接帽 兩根下載線也要拿掉,重啟


  1. /******************************************************************************* 

  2. *    

  3. * 軟件功能:  串口實驗(軟件延時方式) 

  4. *  

  5. *******************************************************************************/  

  6. #include "stm32f10x.h"  

  7. #include   

  8. #include "delay.h"  

  9.   

  10. u8 uart1_buf[20];  

  11. int count=0;  //字符串長度  

  12. int flag=0;     

  13.   

  14. void RCC_Configuration(void);  

  15. void GPIO_Configuration(void);  

  16. void NVIC_Configuration(void);  

  17. void USART1_Configuration(void);  

  18. void Uart1_PutChar(u8 ch);  

  19. void Uart1_PutString(u8* buf , u8 len);  

  20. int USART1_ReceivedStrCmp(const char *str);  

  21.                               

  22. /************************************************* 

  23. 函數: int main(void) 

  24. 功能: main主函數 

  25. 參數: 無 

  26. 返回: 無 

  27. **************************************************/  

  28. int main(void)  

  29. {  

  30.   RCC_Configuration();  

  31.   NVIC_Configuration();  

  32.   GPIO_Configuration();  

  33.   delay_init(72);  

  34.   USART1_Configuration();  

  35.   GPIO_ResetBits(GPIOA,GPIO_Pin_0);//滅  

  36.   while(1)  

  37.   {    

  38.     //GPIO_ResetBits(GPIOA,GPIO_Pin_0);//滅  

  39.     //delay_ms(500);//延時  

  40.     //Uart1_PutString("Hello",5);  

  41.     //GPIO_SetBits(GPIOA,GPIO_Pin_0);//亮  

  42.    // delay_ms(500);//延時  

  43.     /* if(flag==1&&count!=0) 

  44.      { 

  45.          Uart1_PutString(uart1_buf,count); 

  46.          count=0; 

  47.          flag=0; 

  48.      }       */  

  49.   }  

  50. }  

  51.   

  52. /************************************************* 

  53. 函數: void RCC_Configuration(void) 

  54. 功能: 復位和時鐘控制 配置 

  55. 參數: 無 

  56. 返回: 無 

  57. **************************************************/  

  58. void RCC_Configuration(void)  

  59. {  

  60.   ErrorStatus HSEStartUpStatus;                    //定義外部高速晶體啟動狀態枚舉變量  

  61.   RCC_DeInit();                                    //復位RCC外部設備寄存器到默認值  

  62.   RCC_HSEConfig(RCC_HSE_ON);                       //打開外部高速晶振  

  63.   HSEStartUpStatus = RCC_WaitForHSEStartUp();      //等待外部高速時鐘準備好  

  64.   if(HSEStartUpStatus == SUCCESS)                  //外部高速時鐘已經準別好  

  65.   {  

  66.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //開啟FLASH預讀緩沖功能,加速FLASH的讀取。所有程序中必須的用法.位置:RCC初始化子函數里面,時鐘起振之后  

  67.     FLASH_SetLatency(FLASH_Latency_2);                    //flash操作的延時  

  68.           

  69.     RCC_HCLKConfig(RCC_SYSCLK_Div1);               //配置AHB(HCLK)時鐘等于==SYSCLK  

  70.     RCC_PCLK2Config(RCC_HCLK_Div1);                //配置APB2(PCLK2)鐘==AHB時鐘  

  71.     RCC_PCLK1Config(RCC_HCLK_Div2);                //配置APB1(PCLK1)鐘==AHB1/2時鐘  

  72.            

  73.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);  //配置PLL時鐘 == 外部高速晶體時鐘 * 9 = 72MHz  

  74.     RCC_PLLCmd(ENABLE);                                   //使能PLL時鐘  

  75.      

  76.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)    //等待PLL時鐘就緒  

  77.     {  

  78.     }  

  79.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);            //配置系統時鐘 = PLL時鐘  

  80.     while(RCC_GetSYSCLKSource() != 0x08)                  //檢查PLL時鐘是否作為系統時鐘  

  81.     {  

  82.     }  

  83.   }  

  84.     

  85.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE);  //允許 GPIOA、USART1、AFIO時鐘  

  86. }  

  87.   

  88. /************************************************* 

  89. 函數: void GPIO_Configuration(void) 

  90. 功能: GPIO配置 

  91. 參數: 無 

  92. 返回: 無 

  93. **************************************************/  

  94. void GPIO_Configuration(void)  

  95. {  

  96.   GPIO_InitTypeDef GPIO_InitStructure;        //定義GPIO初始化結構體  

  97.   

  98.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;   

  99.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   

  100.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出      

  101.   GPIO_Init(GPIOA, &GPIO_InitStructure);       //PA0輸出控制LED燈  

  102.   

  103.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;   

  104.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復合推挽輸出     

  105.   GPIO_Init(GPIOA, &GPIO_InitStructure);       //PA9串口輸出  

  106.   

  107.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;   

  108.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入  

  109.   GPIO_Init(GPIOA, &GPIO_InitStructure);       //PA10用于串口讀入  

  110. }  

  111.   

  112. void NVIC_Configuration(void)    //中斷分組和優先級配置    詳見《STM32的函數說明(中文).pdf》P165  

  113. {  

  114.     NVIC_InitTypeDef NVIC_InitStructure;  

  115.   

  116.     //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);    

  117.     // Set the Vector Table base location at 0x08000000 配置中斷向量偏移表的.默認是FLASH的,所以你不設置也無關系. RAM調試的時候,必須設置.  

  118.   

  119.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  //0組,先占優先級1位,從優先級3位  

  120.     NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //USART1 全局中斷  

  121.     //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;  

  122.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;    //中斷響應優先級1  

  123.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能  

  124.     NVIC_Init(&NVIC_InitStructure); //初始化配置  

  125. }  

  126.   

  127. /******************************************************************************* 

  128.     函數名:USART1_Configuration 

  129.     輸  入: 

  130.     輸  出: 

  131.     功能說明: 

  132.     初始化串口硬件設備,啟用中斷 

  133.     配置步驟: 

  134.     (1)打開GPIO和USART1的時鐘 

  135.     (2)設置USART1兩個管腳GPIO模式 

  136.     (3)配置USART1數據格式、波特率等參數 

  137.     (4)使能USART1接收中斷功能 

  138.     (5)最后使能USART1功能 

  139. */  

  140. void USART1_Configuration(void)   //串口配置   詳見《STM32的函數說明(中文).pdf》P346  

  141. {  

  142.     USART_InitTypeDef USART_InitStructure;  

  143.     USART_InitStructure.USART_BaudRate=9600;   //波特率為9600  

  144.     USART_InitStructure.USART_WordLength=USART_WordLength_8b;  //數據位為8  

  145.     USART_InitStructure.USART_StopBits=USART_StopBits_1; //在幀結尾傳輸 1 個停止位  

  146.     USART_InitStructure.USART_Parity=USART_Parity_No; //校驗模式:奇偶失能  

  147.     USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //硬件流控制失能  

  148.     USART_InitStructure.USART_Mode=USART_Mode_Tx | USART_Mode_Rx; //USART_Mode 指定了使能或者失能發送和接收模式:發送使能|接收失能  

  149.     USART_Init(USART1, &USART_InitStructure);     //初始化配置  

  150.   

  151.     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //使能或者失能指定的 USART 中斷    ,此處為接收中斷  

  152.     USART_Cmd(USART1,ENABLE);   //使能或者失能 USART 外設  

  153.     USART_ClearFlag(USART1, USART_FLAG_TC);//清除傳輸完成標志位,否則可能會丟失第1個字節的數據.USART_FLAG_TC為發送完成標志位  

  154. }  

  155.   

  156.   

  157.   

  158. /********************************************************* 

  159.                 中斷服務程序 

  160. *********************************************************/  

  161. void USART1_IRQHandler(void)  

  162. {     

  163.     u8 dat;  

  164.     //u8 uart1_buf[6];  

  165.       

  166.     if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)    //若接收完成  

  167.     {  

  168.           

  169.         //GPIO_SetBits(GPIOA,GPIO_Pin_0);//點亮LED                    

  170.         //delay_ms(500);//延時  

  171.         //GPIO_ResetBits(GPIOA,GPIO_Pin_0);//滅   

  172.        

  173.         dat=USART_ReceiveData(USART1);  

  174.         //Uart1_PutChar(dat);  

  175.         //uart1_buf[count++]=dat;  

  176.           

  177.           

  178.         dat = USART_ReceiveData(USART1);  

  179.         if(dat!=0x23)    //!='#'在發送的信息末尾應包含'#'號  

  180.         {  

  181.             uart1_buf[count++]=dat;  

  182.             if(count>19){  

  183.                Uart1_PutString("超出長度![最長20個字符/10個漢字]",32);  

  184.                count=0;  

  185.             }  

  186.         }else if(count!=0)  

  187.             {  

  188.                 //Uart1_PutString("Received Data:",14);  

  189.                 //Uart1_PutString(uart1_buf,count);  

  190.                 if(USART1_ReceivedStrCmp("我愛你")) Uart1_PutString("我也愛你",8);  

  191.                 if(USART1_ReceivedStrCmp("Hello")) Uart1_PutString("Hi",2);  

  192.                 count=0;  

  193.             }         

  194.   

  195.         USART_ClearFlag(USART1,USART_IT_RXNE);  

  196.     }   

  197.   

  198.       //溢出處理-如果發生溢出需要先清除ORE,再讀DR寄存器 則可清除不斷入中斷的問題  

  199.         if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)  

  200.         {  

  201.                 USART_ClearFlag(USART1,USART_FLAG_ORE);        //清除ORE  

  202.                 USART_ReceiveData(USART1);                                //讀DR  

  203.         }  

  204.   

  205. }  

  206.   

  207.   

  208. //發送一個字符  

  209. void Uart1_PutChar(u8 ch)  

  210. {  

  211.     USART_SendData(USART1, (u8) ch);  

  212.     while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);//等待發送完成  

  213. }  

  214.   

  215. //發送一個字符串 Input : buf為發送數據的地址 , len為發送字符的個數  

  216. void Uart1_PutString(u8* buf , u8 len)  

  217. {     

  218.     u8 i;  

  219.     for(i=0;i

  220.     {  

  221.         Uart1_PutChar(*(buf++));  

  222.     }  

  223. }  

  224.   

  225. int USART1_ReceivedStrCmp(const char *str)     //比較  int memicmp(const void *buf1, const void *buf2, size_t count);不區分大小寫  

  226. {    

  227.     if(memcmp(uart1_buf, str , strlen(str))==0)return 1;    

  228.     else return 0;   


關鍵字:STM32  單片機  串口中斷通信 引用地址:STM32單片機(3) 串口中斷通信

上一篇:STM32單片機(5) 定時器中斷實驗
下一篇:STM32單片機(2) 外部中斷

推薦閱讀

5月19日報道 今日,《華爾街日報》的報道稱,一位北京方面的官員表示,高通對于恩智浦的收購獲批前景較為樂觀。該報道公布后,恩智浦股價上漲了5.9%,創下本周最大漲幅。高通與恩智浦拒絕對此事做出評論。5月14日,彭博社的報道稱商務部重啟了對于高通恩智浦收購一事的審查程序,但并不意味著審批會通過。本周,中國監管機構已經通過了兩項交易的審核,分...
日前,互聯網周刊與net研究院聯合發布了《2019中國科技機器人企業排行榜top50》榜單。其中,富士康工業互聯網股份有限公司高居榜首,除此之外,大眾相對比較熟悉的掃地機器人公司科沃斯、聞名全球的企業創新則分別位列第三與第八位。而富士康集團能位居中國科技機器人企業之首,算得上是意料之外,但是又在情理之中。早在2011年,郭臺銘就曾公開的表示:...
疫情爆發以來,快速發展的行業除了生鮮電商、在線教育、遠程辦公等產業,還有服務機器人。雖然服務機器人已不是新奇事物,但疫情催生出的機器人應用新場景不斷涌現,消毒機器人、測溫機器人等無接觸、高效率、抗感染的防疫機器人“新成員”應運而生,服務機器人市場再次站上輿論風口。相對沉寂已久的服務機器人市場再次熱鬧起來,一改以往“偽智能”、“雞...
美國專利商標局USPTO的記錄顯示,中興通訊近期向智能手機制造商OPPO轉讓了至少47族專利。根據外媒IAM Media的報道,所轉讓專利均為通信相關專利,技術領域覆蓋基站、終端、網絡和無線通信等。專利申請日期大多在2011年2016年之間,授權日期則在2015年至2019年間,亦即剩余專利保護期在10年乃至15年以上,專利價值潛力巨大。值得一提的是,盡管跨國企業間...

史海拾趣

問答坊 | AI 解惑

【藏書閣】傳感器與檢測技術

第01章 傳感器與檢測技術基礎知識 50頁.ppt 第02章 電阻式傳感器 41頁.ppt 第03章 電容式傳感器 32頁.ppt 第04章 電感式傳感器 26頁.ppt 第05章 熱電偶傳感器 35頁.ppt 第06章 壓電式傳感器 20頁.ppt 第07章 光電式傳感器 37頁.ppt 第08章 ...…

查看全部問答∨

誰有這篇文章,有的話,發下,謝謝

A synchronous buck converter with modified hysteretic control, invariable from output filter characteristics…

查看全部問答∨

TAPI

請教各位:         我在wince6.0環境下面調用TAPI.在調用lineMakeCall之后.在回調響應函數中收到了LINECALLSTATE_DIALING 兩次和 LINECALLSTATE_DIALTONE 一次消息之后,就出現一個 LINEDISCONNECTMODE_NORMAL 消 ...…

查看全部問答∨

如何設置STM101C8的PD0和PD1????

重新布版前,我測試過,可以設置兩個晶振引腳為GPIOD。可現在忘了當時怎么設置的了.   :(我現在的代碼如下: 卻沒有效果, 郁悶了,發上來讓香主幫忙看看。  //初始化GPIO接口  /* AFIO&nb ...…

查看全部問答∨

魚眼圖片矯正

我現在想做魚眼圖片在nios上實現矯正這方面的算法,看了好多矯正算法的PDF,其中《魚眼圖像輪廓提取及校正研究》這篇論文,最讓我上心了,看了,也理解了好久,在nios上面也寫了一段,但是最終還是在實現矯正算法上面出現了問題,希望論壇里的前輩 ...…

查看全部問答∨

典型小信號放大電路設計.pdf

本帖最后由 dontium 于 2015-1-23 11:34 編輯 典型小信號放大電路設計 …

查看全部問答∨

方案開發公司招 兼職硬件工程師

  職位要求:     1、自動控制或電子類專業;   2、10年以上電子等相關行業硬件研發工作經驗;   3、能夠獨立完成電路方案設計、LAYOUT、以及后期硬件調試,能良好與軟件工程師的交流協作;&nbs ...…

查看全部問答∨

下載5110程序時出現的問題

這個讓我查了半天都沒找到問題,程序下不進去…

查看全部問答∨

飛思卡爾推出Kinetis KW2x無線MCU

2013年12月5日,德克薩斯州奧斯汀訊—飛思卡爾半導體公司 (NYSE: FSL) 推出并發售一流的802.15.4/ZigBee®無線解決方案,進一步擴展了其Kinetis 微控制器(MCU)產品組合。該解決方案適用于廣泛應用,包括智能能源、家庭/樓宇自動化及家庭娛樂 ...…

查看全部問答∨

Lattice ddr_generic

各位走過路過的大俠,小弟最近使用lattice的時候碰到如下的問題。 工具:Diamond 13.1 錯誤:@E:MF515 : iddr.v(62) | Found illegal pad connections on padXXX 錯誤內容是lattice生成的一個ddr_generic_receive,時鐘接口接到FPGA管腳的一個輸 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 大关县| 林口县| 蕲春县| 海阳市| 太康县| 客服| 沅江市| 茌平县| 宁强县| 来凤县| 聂拉木县| 收藏| 呼和浩特市| 柳江县| 屯门区| 清河县| 新巴尔虎右旗| 剑河县| 元朗区| 赞皇县| 无棣县| 遂昌县| 通城县| 福安市| 宁阳县| 淮阳县| 南昌县| 高唐县| 莱西市| 和林格尔县| 珠海市| 乌审旗| 松桃| 本溪| 牙克石市| 富锦市| 桃园市| 田阳县| 宁都县| 河曲县| 芒康县|