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

一,串口相關(guān)寄存器

USART_SR 狀態(tài)寄存器

USART_DR 數(shù)據(jù)寄存器

USART_BRR 波特率寄存器

USART_CR1 控制寄存器


USART_SR-狀態(tài)寄存器:

這里寫圖片描述   

  狀態(tài)寄存器USART_SR,描述串口寄存器的一些狀態(tài): 

   

  如位5:讀數(shù)據(jù)寄存器非空 

這里寫圖片描述 

  通過讀取這個(gè)位的值,判斷是否收到了完整的數(shù)據(jù) 

  串口已經(jīng)接收到了數(shù)據(jù),并且已經(jīng)寫入到了USART_DR寄存器


USART_DR-數(shù)據(jù)寄存器:

這里寫圖片描述 

  數(shù)據(jù)寄存器USART_DR,只使用了位0-8,其他位保留 

這里寫圖片描述

  讀寄存器:讀取該寄存器獲取接收到的數(shù)據(jù)值 

  寫寄存器:向該寄存器寫入發(fā)送的數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行發(fā)送


USART_BRR-波特率寄存器:

這里寫圖片描述 

  波特率寄存器USART_BRR,只用到了低16位,高16位保留 

這里寫圖片描述

  0-3位[3:0]  : USART分頻器的小數(shù)部分DIV_Fraction 

  4-15位[15:4] : USART分頻器的整數(shù)部分DIV_Mantissa


USART_CR1-控制寄存器:

這里寫圖片描述 

  USART_BRR波特率寄存器,設(shè)置串口寄存器使能位 

   

  如:接收使能,發(fā)送使能 

這里寫圖片描述

二,波特率的計(jì)算方法

波特率發(fā)生器

這里寫圖片描述

如圖:

    波特率由波特率發(fā)生器和PCLKx共同產(chǎn)生

    PCLKx的值由串口本身決定

    通過配置USART_BRR寄存器確定波特率發(fā)生器的值

    經(jīng)過USARTDIV分頻器除以16得到最終的波特率


波特率計(jì)算方法:

這里寫圖片描述

設(shè)置串口1波特率為115200MHz


串口1的時(shí)鐘來自PCLK2=72MHz


由公式得到:

    USARTDIV=72000000/(115200*16)=39.0625


整數(shù)部分DIV_Mantissa=39=0x27

小數(shù)部分DIV_Fraction=16*0,0625=1=0x01


所以設(shè)置USART->BRR=0x0271,就可以實(shí)現(xiàn)設(shè)置串口1的波特率為115200MHz


三,串口操作相關(guān)庫函數(shù)

獲取狀態(tài)標(biāo)志位函數(shù)-操作USART_SR寄存器


// 獲取狀態(tài)標(biāo)志位

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);

// 清除狀態(tài)標(biāo)志位

void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);

// 獲取中斷狀態(tài)標(biāo)志位

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);

// 清除中斷狀態(tài)標(biāo)志位

void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);


接收發(fā)送數(shù)據(jù)函數(shù)-操作USART_DR寄存器


// 發(fā)送數(shù)據(jù)到串口(通過寫USART_DR寄存器發(fā)送數(shù)據(jù))

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

// 接收數(shù)據(jù)(從USART_DR寄存器讀取接收到的數(shù)據(jù))

uint16_t USART_ReceiveData(USART_TypeDef* USARTx);


串口配置函數(shù)


// 串口初始化:波特率,數(shù)據(jù)字長,奇偶校驗(yàn),硬件流控以及收發(fā)使能

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);

// 使能串口

void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);

// 使能相關(guān)中斷

void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);


四,串口硬件連接

PA9-RXD

PA10-TXD

CH340  USB轉(zhuǎn)串口    將USB虛擬為串口使用


五,串口配置的步驟

1,串口時(shí)鐘使能,GPIO時(shí)鐘使能

     RCC_APB2PeriphClockCmd()

2,串口復(fù)位

     USART_DeInit();

3,GPIO端口模式設(shè)置

     GPIO_Init();

4,串口參數(shù)初始化

     USART_Init()

5,開啟中斷并初始化NVIC

     NVIC_Init();

     USART_ITConfig();

6,使能串口

     USART_Cmd();

7,中斷函數(shù)邏輯

     USARTx_IRQHandler();

8,串口數(shù)據(jù)發(fā)送

     void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

     uint16_t USART_ReceiveData(USART_TypeDef* USARTx);

9,串口傳輸狀態(tài)獲取

     ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);

     void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);



六,串口測(cè)試程序設(shè)計(jì)

程序功能:


 電腦通過USB線連接開發(fā)板,開發(fā)板通過USB轉(zhuǎn)串口實(shí)現(xiàn)和電腦的通信

 電腦使用串口工具想單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)收到數(shù)據(jù)后返回給電腦


 注:以串口1為例實(shí)現(xiàn)


七,串口測(cè)試程序?qū)崿F(xiàn)分析

1,使能GPIO時(shí)鐘


串口1的發(fā)送,接收引腳為PA9和PA10

所以我們要使能GPIOA和串口1的時(shí)鐘

串口1和GPIOx時(shí)鐘源為APB2

所以使用RCC_APB2PeriphClockCmd函數(shù)進(jìn)行初始化


stm32f10x_rcc.c找到RCC_APB2PeriphClockCmd函數(shù)源碼:


/**

  * @brief  Enables or disables the High Speed APB (APB2) peripheral clock.

  * @param  RCC_APB2Periph: specifies the APB2 peripheral to gates its clock.

  *   This parameter can be any combination of the following values:

  *     @arg RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB,

  *          RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE,

  *          RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1,

  *          RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1,

  *          RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3,

  *          RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17,

  *          RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11

  * @param  NewState: new state of the specified peripheral clock.

  *   This parameter can be: ENABLE or DISABLE.

  * @retval None

  */

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

{

  /* Check the parameters */

  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));

  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)

  {

    RCC->APB2ENR |= RCC_APB2Periph;

  }

  else

  {

    RCC->APB2ENR &= ~RCC_APB2Periph;

  }

}


stm32f10x_rcc.h找到IS_RCC_APB2_PERIPH函數(shù)聲明:


/** @defgroup APB2_peripheral

  * @{

  */


#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)

#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)

#define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)

#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)

#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)

#define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)

#define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)

#define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)

#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)

#define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)

#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)

#define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)

#define RCC_APB2Periph_TIM8              ((uint32_t)0x00002000)

#define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)

#define RCC_APB2Periph_ADC3              ((uint32_t)0x00008000)

#define RCC_APB2Periph_TIM15             ((uint32_t)0x00010000)

#define RCC_APB2Periph_TIM16             ((uint32_t)0x00020000)

#define RCC_APB2Periph_TIM17             ((uint32_t)0x00040000)

#define RCC_APB2Periph_TIM9              ((uint32_t)0x00080000)

#define RCC_APB2Periph_TIM10             ((uint32_t)0x00100000)

#define RCC_APB2Periph_TIM11             ((uint32_t)0x00200000)


#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))


從參數(shù)定義驗(yàn)證了GPIOA-GPIOG 和串口1(USART1)的時(shí)鐘使能由RCC_APB2PeriphClockCmd()控制


所以使能GPIOA和串口1時(shí)鐘代碼為:


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);     //使能GPIOA時(shí)鐘源

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);    //使能串口1時(shí)鐘源


2,初始化GPIOA的工作模式


通過查找STM32中文參考手冊(cè)確定串口1引腳工作模式配置:

這里寫圖片描述

如圖:

串口1接收發(fā)送引腳配置

    發(fā)送端PA9配置為推挽復(fù)用輸出

    接收端PA10配置為浮空輸入或上拉輸入


代碼:


GPIO_InitTypeDef GPIO_InitStrue;


//發(fā)送端PA9配置

GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;            //發(fā)送端-TXD

GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;      //推挽輸出

GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;

GPIO_Init(GPIOA, &GPIO_InitStrue);


//接收端PA10配置

GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;           //接收端-RXD

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

GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;

GPIO_Init(GPIOA, &GPIO_InitStrue);


3,串口初始化


stm32f10x_usart.h頭文件找到USART_Init函數(shù)聲明:


void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);

1

stm32f10x_usart.h找到入?yún)SART_InitTypeDef結(jié)構(gòu)體聲明


/**

  * @brief  USART Init Structure definition

  */

typedef struct

{

  uint32_t USART_BaudRate;               // 設(shè)置波特率

  uint16_t USART_WordLength;             // 字長8或9(停止位)

  uint16_t USART_StopBits;               // 停止位

  uint16_t USART_Parity;                 // 奇偶校驗(yàn)

  uint16_t USART_Mode;                   // 發(fā)送接收使能

  uint16_t USART_HardwareFlowControl;    // 硬件流控制

} USART_InitTypeDef;


USART_HardwareFlowControl-硬件流參數(shù)有效性驗(yàn)證


/** @defgroup USART_Hardware_Flow_Control

  * @{

  */

#define USART_HardwareFlowControl_None       ((uint16_t)0x0000)

#define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)

#define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)

#define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)

#define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)

                              (((CONTROL) == USART_HardwareFlowControl_None) ||

                               ((CONTROL) == USART_HardwareFlowControl_RTS) ||

                               ((CONTROL) == USART_HardwareFlowControl_CTS) ||

                               ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))


USART_Mode-使能參數(shù)有效性驗(yàn)證


/** @defgroup USART_Mode

  * @{

  */


#define USART_Mode_Rx                        ((uint16_t)0x0004)

#define USART_Mode_Tx                        ((uint16_t)0x0008)

#define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFFF3) == 0x00) && ((MODE) != (uint16_t)0x00))


USART_Parity-奇偶校驗(yàn)參數(shù)有效性


/** @defgroup USART_Parity

  * @{

  */


#define USART_Parity_No                      ((uint16_t)0x0000)

[1] [2] [3]
關(guān)鍵字:USART  串口通信  配置 引用地址:USART串口通信配置

上一篇:USART_FLAG_RXNE與USART_IT_RXNE區(qū)別
下一篇:USART里面TXE和TC的用法

推薦閱讀

隨著人們生活水平的不斷提高,對(duì)產(chǎn)品服務(wù)的要求也發(fā)生了變化,消費(fèi)端開始升級(jí)并帶來新的挑戰(zhàn)和機(jī)遇。而服務(wù)機(jī)器人似乎為新的時(shí)代而生,逐步開始進(jìn)入社會(huì),進(jìn)入家庭,服務(wù)于平民大眾。在2018世界機(jī)器人大會(huì)上,北京康力優(yōu)藍(lán)機(jī)器人科技有限公司創(chuàng)始人兼首席執(zhí)行官劉雪楠認(rèn)為,服務(wù)機(jī)器人最大的市場(chǎng)是面向家庭的服務(wù)機(jī)器人,如果從商業(yè)價(jià)值的角度來講,最大的...
所謂“人孔”,顧名思義,就是在處理系統(tǒng)上打開的一個(gè)孔,目的是讓工作人員能夠進(jìn)入其中進(jìn)行清潔、維護(hù)和檢查等工作。然而,這個(gè)名稱恐怕用不了多久就會(huì)變得不恰當(dāng),因?yàn)樵跈C(jī)械化程度越來越高的背景下,機(jī)器人終將積極擔(dān)負(fù)起人孔清潔和檢查的工作。長久以來,排水設(shè)施堵塞一直是橫亙?cè)谌藗兠媲暗囊淮箅y題,我們對(duì)此卻別無他法,唯有人工疏通這一條路。然而...
  新醫(yī)改啟動(dòng)以來,加快推進(jìn)了醫(yī)療衛(wèi)生的信息化和智能化,智能醫(yī)療正成為整個(gè)醫(yī)療產(chǎn)業(yè)的熱點(diǎn),有助改善看病難題,提高醫(yī)療機(jī)構(gòu)的工作效率,人們?cè)谏鐓^(qū)或家里就可以享受到醫(yī)療服務(wù)。醫(yī)療終端設(shè)備的小型化,信息化,智能化,為智能醫(yī)療行業(yè)的發(fā)展提供了條件。智能醫(yī)療對(duì)于醫(yī)療設(shè)備制造商、芯片企業(yè)、應(yīng)用開發(fā)等產(chǎn)業(yè)鏈的各個(gè)環(huán)節(jié),是一座“金礦”、一項(xiàng)潛力...
具體實(shí)現(xiàn)功能系統(tǒng)由STC89C51單片機(jī)+315M無線通信模塊+SC2262/SC2272編碼與解碼模塊+LCD1602液晶顯示屏+按鍵+蜂鳴器+電源構(gòu)成。具體功能:1、當(dāng)病人按下遙控板上按鍵時(shí),主控板的顯示屏可顯示患者的床位號(hào);2、可多人同時(shí)使用,同時(shí)顯示;3、醫(yī)護(hù)人員按下“響應(yīng)”鍵取消當(dāng)前呼叫;4、呼叫范圍為100m左右。設(shè)計(jì)背景目前大多醫(yī)院的病床呼叫系統(tǒng)采用有線傳輸方...

史海拾趣

問答坊 | AI 解惑

一點(diǎn)PCB方面的小知識(shí)

1、我們常用的PCB介質(zhì)是FR4材料的,相對(duì)空氣的介電常數(shù)是4.2-4.7。這個(gè)介電常數(shù)是會(huì)隨溫度變化的,在0-70度的溫度范圍內(nèi),其最大變化范圍可以達(dá)到20%。介電常數(shù)的變化會(huì)導(dǎo)致線路延時(shí)10%的變化,溫度越高,延時(shí)越大。介電常數(shù)還會(huì)隨信號(hào)頻率變化,頻 ...…

查看全部問答∨

討論“項(xiàng)目經(jīng)理的工作職責(zé)”

項(xiàng)目經(jīng)理---負(fù)責(zé)新產(chǎn)品的開發(fā)的項(xiàng)目經(jīng)理的工作職責(zé)是啥?怎樣考評(píng)?怎樣激勵(lì)?…

查看全部問答∨

關(guān)于xilinx FPGA 中嵌入的PowerPC 405 cores 的使用問題請(qǐng)教

我手里的開發(fā)板是xilinx公司的v2pro芯片的xupv2p開發(fā)板。 芯片是嵌入了PowerPC405 cores ; 開發(fā)板上有一個(gè)DEBUG 16針接口。 我想問一下,如何使用這個(gè)接口呢?如何調(diào)試,仿真嵌入的PowerPC 呢? 如果需要下載程序到這個(gè)里面需要什么樣的下載線 ...…

查看全部問答∨

如何選適合產(chǎn)品的系統(tǒng)設(shè)計(jì)模板

請(qǐng)問大家如何選適合產(chǎn)品的系統(tǒng)設(shè)計(jì)模板  不清楚每個(gè)模板下有哪些組件…

查看全部問答∨

合肥地區(qū)招聘嵌入式軟件工程師

任職條件: 大學(xué)嵌入式、計(jì)算機(jī)、電子專業(yè)本科學(xué)歷。研究生、有工作經(jīng)驗(yàn)者、有嵌入式相關(guān)證書者優(yōu)先。 英語四級(jí)以上,六級(jí)以上者優(yōu)先。 精通嵌入式C語言,熟練掌握嵌入式系統(tǒng)架構(gòu)、原理。 熱愛本職工作,具有較強(qiáng)的團(tuán)隊(duì)合作精神。 誠實(shí)、 ...…

查看全部問答∨

wince 的導(dǎo)航軟件 怎么調(diào)用地圖

入門想問問: wince平臺(tái)上的導(dǎo)航軟件 一般是怎么調(diào)用導(dǎo)航地圖…

查看全部問答∨

2410 ECC 問題

2410 文檔 2410自帶eCC功能: ECC generator block executes the followings: 1. When MCU writes data to NAND, the ECC generator block generates ECC code. 2. When MCU reads data from NAND, the ECC generator block generates ECC code ...…

查看全部問答∨

我想在Wince的系統(tǒng)托盤中實(shí)現(xiàn)氣球提示功能,請(qǐng)高手指點(diǎn)指點(diǎn)

如題,為什么當(dāng)鼠標(biāo)移動(dòng)到托盤圖標(biāo)上時(shí),不顯示提示信息呢?…

查看全部問答∨

linux內(nèi)核完全剖析 基于0.12內(nèi)核 txt下載

linux內(nèi)核完全剖析 基于0.12內(nèi)核 趙炯 的  200901的  txt doc pdf 的下載版本地址 誰有就給個(gè)鏈接吧 謝謝了哈  嘿嘿…

查看全部問答∨

各位能否就430在電池供電下的應(yīng)用發(fā)表些看法

我作了一個(gè)控制系統(tǒng),定時(shí)控制部分. 430采用電池(SONY的CR2032)供電, 每分鐘系統(tǒng)激活一次,工作約100ms, 在激活工作期間以9600bps的波特率發(fā)送一個(gè)字節(jié)的數(shù)據(jù). 發(fā)現(xiàn)工作三天之后電池電量就不足了. 有沒有哪位遇到這樣的問題. 發(fā)表一下看法吧…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 含山县| 高清| 绥宁县| 蕲春县| 云浮市| 三穗县| 竹溪县| 凯里市| 乌兰浩特市| 土默特右旗| 六安市| 淅川县| 浪卡子县| 肃南| 讷河市| 华蓥市| 德令哈市| 汉川市| 堆龙德庆县| 大埔区| 鄂伦春自治旗| 宾川县| 正定县| 伊金霍洛旗| 黑河市| 公安县| 庆元县| 双流县| 康马县| 夏河县| 涟源市| 成都市| 陆川县| 台山市| 惠来县| 上犹县| 会昌县| 阳泉市| 察哈| 姚安县| 渝北区|