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

歷史上的今天

今天是:2024年10月16日(星期三)

正在發生

2019年10月16日 | STM32單片機(3) 串口中斷通信

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

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


/*******************************************************************************

*

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

*******************************************************************************/

#include "stm32f10x.h"

#include

#include "delay.h"

 

u8 uart1_buf[20];

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

int flag=0;   

 

void RCC_Configuration(void);

void GPIO_Configuration(void);

void NVIC_Configuration(void);

void USART1_Configuration(void);

void Uart1_PutChar(u8 ch);

void Uart1_PutString(u8* buf , u8 len);

int USART1_ReceivedStrCmp(const char *str);

/*************************************************

函數: int main(void)

功能: main主函數

參數: 無

返回: 無

**************************************************/

int main(void)

{

  RCC_Configuration();

  NVIC_Configuration();

  GPIO_Configuration();

  delay_init(72);

  USART1_Configuration();

  GPIO_ResetBits(GPIOA,GPIO_Pin_0);//滅

  while(1)

  {  

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

//delay_ms(500);//延時

//Uart1_PutString("Hello",5);

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

   // delay_ms(500);//延時

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

{

Uart1_PutString(uart1_buf,count);

count=0;

flag=0;

} */

  }

}

 

/*************************************************

函數: void RCC_Configuration(void)

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

參數: 無

返回: 無

**************************************************/

void RCC_Configuration(void)

{

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

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

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

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

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

  {

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

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

     

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

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

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

         

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

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

   

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

    {

    }

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

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

    {

    }

  }

  

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

}

 

/*************************************************

函數: void GPIO_Configuration(void)

功能: GPIO配置

參數: 無

返回: 無

**************************************************/

void GPIO_Configuration(void)

{

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

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; 

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

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

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

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 

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

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

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 

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

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

}

 

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

{

NVIC_InitTypeDef NVIC_InitStructure;

 

//NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  

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

 

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

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

//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

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

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能

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

}

 

/*******************************************************************************

函數名:USART1_Configuration

輸  入:

輸  出:

功能說明:

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

配置步驟:

(1)打開GPIO和USART1的時鐘

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

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

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

(5)最后使能USART1功能

*/

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

{

USART_InitTypeDef USART_InitStructure;

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

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

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

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

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

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

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

 

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

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

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

}

 

 

 

/*********************************************************

                中斷服務程序

*********************************************************/

void USART1_IRQHandler(void)

{

u8 dat;

//u8 uart1_buf[6];

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

    {

   

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

    //delay_ms(500);//延時

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

     

dat=USART_ReceiveData(USART1);

//Uart1_PutChar(dat);

//uart1_buf[count++]=dat;

dat = USART_ReceiveData(USART1);

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

{

uart1_buf[count++]=dat;

if(count>19){

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

   count=0;

}

}else if(count!=0)

{

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

//Uart1_PutString(uart1_buf,count);

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

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

count=0;

}

 

USART_ClearFlag(USART1,USART_IT_RXNE);

    } 

 

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

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

        {

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

                USART_ReceiveData(USART1);                                //讀DR

        }

 

}

 

 

//發送一個字符

void Uart1_PutChar(u8 ch)

{

    USART_SendData(USART1, (u8) ch);

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

}

 

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

void Uart1_PutString(u8* buf , u8 len)

{   

u8 i;

    for(i=0;i    {

        Uart1_PutChar(*(buf++));

    }

}

 

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

{  

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

else return 0; 

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

上一篇:STM32調試筆記之USART-波特率
下一篇:STM32F103RC驅動CH375B模塊讀寫優盤扇區數據

推薦閱讀

固守X86芯片架構的英特爾錯過了整個移動互聯網時代。現在,它打算在5G和自動駕駛上卷土重來,重裝再戰。然而,距離5000億美金巔峰市值僅一半不到的英特爾像極了中國足球隊——留給他們的時間已經不多了。 英特爾全面布局汽車領域 汽車產業正在經歷深刻變革,汽車將成為下一個智能平臺已是板上釘釘。和智能手機相比,汽車未來所需的芯片數量更多,難度更大...
在車市“寒冬”里,一則消息引發了市場廣泛關注,也為深陷持續虧損、銷量下滑、股價下跌等多重困境的蔚來汽車提供了一絲暖意。 有媒體報道,蔚來正洽談新一輪超 50 億元融資,合作方為浙江湖州市政府。消息顯示,蔚來正與浙江湖州市吳興區洽談一筆超 50 億元的資本合作,與之對應的是蔚來將有一個年產能 20 萬臺的工廠落戶吳興區。 10 月 16 日上...
智能物流即物流的智能化,在現代物流的基礎上,結合物聯網、計算機、互聯網、自動控制和智能決策等技術,使物流系統具有自我思維、自我感知、自我學習、自我檢測、自我推斷、自我決策、自我修復等一系列智能化的能力。智能物流可以通過自動化設備和信息系統獨立進行訂單處理、物流運輸、倉儲配送等各環節作業,實現經濟、高效、可靠和環保的發展目標,因此...
根據外媒 TheVerge 報道,近期有海外用戶發現,自己的索尼 PS5 游戲主機界面出現了蘋果 Apple Music 的圖標,這預示著該 App 有望在 PS5 上登陸。自從 2020 年 11 月 PS5 推出以來,Spotify 一直是系統內唯一的流媒體音樂 App,支持玩家們在游戲的同時播放自己喜歡的音樂。  目前已經有兩名玩家在 PS5 發現了 Apple Musi...

史海拾趣

問答坊 | AI 解惑

專業英語--電力電子方面

Absorber Circuit 吸收電路 AC/AC Frequency Converter 交交變頻電路 AC power control 交流電力控制 AC Power Controller 交流調功電路 AC Power Electronic Switch 交流電力電子開關 Ac Voltage Controller ...…

查看全部問答∨

keil的調試問題

使用keil調試程序,一全速執行,就彈出C:\\Documents and Settings\\Administrator\\桌面 這是為啥呀…

查看全部問答∨

T264移植到dm642遇到的問題

把從網上下載的T264源碼移植到dm642上,過程是這樣的 1、直接編譯T264 的源碼(包括了T264.Pjt和 T264lib.pjt)可以通過,說明程序沒有問題 2.加入了DM642的視頻硬件文件之后出現了很多問題,有 offset too large       ...…

查看全部問答∨

【高分求問,十萬火急】誰研究過將ADS1.2編譯的庫和arm-elf-gcc編譯的庫混編(互相調用)的問題???

如題,最近被要求研究ADS1.2和arm-elf-gcc 兩種編譯器編譯的庫能否鏈接在一起工作和調試的問題; 也就是EABI的問題,我研究了一會,似乎gcc編譯的庫是EABI2.0 而ads編譯的庫EABI的版本號是0啊!! 哪位大俠研究過這個問題嗎? 任何正確的提示、 ...…

查看全部問答∨

微軟對于Wince中TCP/IP協議的定義范圍~急!急!急!

我剛剛接手開發的手機郵件工作,很多東西都不明白-_-!    微軟在Wince5.0 的內核發布中提到,支持TCP/IP協議,沒有詳細的說明,我想問一下是否包括SMTP和POP3呢?…

查看全部問答∨

FlashLoaderDemo燒寫不了

用kei for arm 3.8a生成hex文件時358k,而開發板上的機子ROM容量是128k,怎么燒的進去? 即使是hex文件容量是120k,還是會有在燒寫的時候會出現address not allowed?…

查看全部問答∨

晶振的地線的接法

請教大家一個問題,晶振的地線怎樣接不會對其他地線產生干擾?…

查看全部問答∨

PID算法問題

用AD采樣后,有一個數字量,現在要用PID…

查看全部問答∨

MSP430之我見

MSP430被業內稱為省電王,對此殊榮當之無愧。通過用MSP430來做產品設計,還有看MSP430的芯片手冊,明顯的感覺TI將電源管理系統做到極致。極大的砍掉了不同模式、功能下多余的硬件耗能模塊,極大地砍掉了不同模塊、功能下必須保留的硬件模塊的多余耗 ...…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 滦平县| 永昌县| SHOW| 新和县| 平乐县| 宜黄县| 阿勒泰市| 中方县| 得荣县| 板桥市| 安泽县| 于都县| 偃师市| 江永县| 竹山县| 麻城市| 广水市| 玉环县| 扶沟县| 丹巴县| 凯里市| 西和县| 扶风县| 班戈县| 乐山市| 曲靖市| 醴陵市| 梅河口市| 扎鲁特旗| 滦平县| 谢通门县| 遵义市| 汝阳县| 满城县| 玉门市| 于田县| 黄梅县| 井冈山市| 梅河口市| 金川县| 齐齐哈尔市|