單片機(jī)產(chǎn)品設(shè)計(jì)與調(diào)試-基于STM32F1xx機(jī)型和HAL庫(kù)函數(shù) 課件 任務(wù)9.2 兩臺(tái)STM32單片機(jī)UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試_第1頁(yè)
單片機(jī)產(chǎn)品設(shè)計(jì)與調(diào)試-基于STM32F1xx機(jī)型和HAL庫(kù)函數(shù) 課件 任務(wù)9.2 兩臺(tái)STM32單片機(jī)UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試_第2頁(yè)
單片機(jī)產(chǎn)品設(shè)計(jì)與調(diào)試-基于STM32F1xx機(jī)型和HAL庫(kù)函數(shù) 課件 任務(wù)9.2 兩臺(tái)STM32單片機(jī)UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試_第3頁(yè)
單片機(jī)產(chǎn)品設(shè)計(jì)與調(diào)試-基于STM32F1xx機(jī)型和HAL庫(kù)函數(shù) 課件 任務(wù)9.2 兩臺(tái)STM32單片機(jī)UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試_第4頁(yè)
單片機(jī)產(chǎn)品設(shè)計(jì)與調(diào)試-基于STM32F1xx機(jī)型和HAL庫(kù)函數(shù) 課件 任務(wù)9.2 兩臺(tái)STM32單片機(jī)UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

單片機(jī)產(chǎn)品設(shè)計(jì)與制作

(stm32機(jī)型)石梅香項(xiàng)目9、利用UART實(shí)現(xiàn)LED燈控制任務(wù)9.2兩臺(tái)STM32UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試總目錄1項(xiàng)目1、利用GPIO和位帶操作實(shí)現(xiàn)溫度報(bào)警

2項(xiàng)目2、利用SysTick實(shí)現(xiàn)溫度報(bào)警與控制

3項(xiàng)目3、利用按鍵查詢實(shí)現(xiàn)參數(shù)設(shè)定及顯示

4項(xiàng)目4、利用外部中斷實(shí)現(xiàn)工件計(jì)數(shù)顯示

5項(xiàng)目5、利用定時(shí)器實(shí)現(xiàn)直流電動(dòng)機(jī)PWM調(diào)速6項(xiàng)目6、利用計(jì)數(shù)器實(shí)現(xiàn)工件計(jì)數(shù)顯示和打包控制

7項(xiàng)目7、利用DAC實(shí)現(xiàn)LED亮度控制8項(xiàng)目8、利用ADC實(shí)現(xiàn)土壤濕度采集

項(xiàng)目總目標(biāo)項(xiàng)目總目標(biāo)通過(guò)UART與UART通信、UART與PC機(jī)通信等工作任務(wù),掌握UART通信電路與程序設(shè)計(jì)方法。具體包括:1、了解單片機(jī)串行通信基本概念,能夠說(shuō)出串行通信特點(diǎn)與分類;2、理解STM32F10x的UART結(jié)構(gòu)組成與工作特性,能夠?qū)φ战Y(jié)構(gòu)框圖說(shuō)出其基本工作過(guò)程;3、掌握基于STM32F10xUART的電路設(shè)計(jì)方法,能進(jìn)行基本獨(dú)立設(shè)計(jì)與調(diào)試;4、掌握基于HAL庫(kù)函數(shù)的STM32F10xUART編程方法,能獨(dú)立編程實(shí)現(xiàn);5、會(huì)查找相關(guān)資料、閱讀相關(guān)文獻(xiàn)。子目錄9項(xiàng)目9、利用UART實(shí)現(xiàn)LED燈控制9.1任務(wù)9.1 認(rèn)識(shí)STM32單片機(jī)的USART9.2任務(wù)9.2 兩臺(tái)STM32UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試9.3任務(wù)9.3 STM32UART與PC機(jī)通信系統(tǒng)設(shè)計(jì)與調(diào)試任務(wù)9.2兩臺(tái)STM32UART通信系統(tǒng)的設(shè)計(jì)與調(diào)試一、任務(wù)要求(一)總目標(biāo)1、能畫出兩臺(tái)STM32UART通信電路;2、能利用HAL_UART_Receive()和HAL_UART_Transmit()庫(kù)函數(shù)編寫兩臺(tái)STM32UART通信程序。(二)具體任務(wù)描述按下1#機(jī)K_UP鍵(PA0): 點(diǎn)亮2#機(jī)LED0;按下1#機(jī)K_DOWN鍵(PE2): 熄滅2#機(jī)LED0;按下1#機(jī)K_LEFT鍵(PE3): 點(diǎn)亮2#機(jī)LED0~LED7;按下1#機(jī)K_RIGHT鍵(PE4): 熄滅2#機(jī)LED0~LED7。分組討論要實(shí)現(xiàn)兩臺(tái)STM32的UART通信,電路和程序應(yīng)該怎樣設(shè)計(jì)討論與發(fā)言方案設(shè)計(jì)圖9.2.1系統(tǒng)方框圖電路設(shè)計(jì)由于1#機(jī)只發(fā)送,2#機(jī)只接收,圖中虛線也可以不接程序設(shè)計(jì)與調(diào)試1、1#程序文件布局與框架搭建程序設(shè)計(jì)與調(diào)試2、1#程序流程圖程序設(shè)計(jì)與調(diào)試3、1#程序主程序(1)第5行:聲明UART操作變量UART1_Handler,指出它是一個(gè)extern型變量(該變量在文件uart.c中被定義),數(shù)據(jù)類型是UART_HandleTypeDef。關(guān)于UART_HandleTypeDef類型詳情參見表9.2.1。(2)第7行:定義變量TX_Char,該變量用于存儲(chǔ)準(zhǔn)備從UART發(fā)送的數(shù)據(jù)。(3)第13行,調(diào)用函數(shù)UART1_Init(),初始化UART。該函數(shù)在uart.c中定義,帶一個(gè)參數(shù),用于指出波特率,這里是9600bps。(4)第16~20行:進(jìn)行按鍵采集,根據(jù)按鍵情況為變量TX_Char賦值。第22行:使用了庫(kù)函數(shù)HAL_UART_Transmit(),將變量TX_Char的值送入U(xiǎn)ART進(jìn)行發(fā)送。該函數(shù)共有4個(gè)參數(shù)程序設(shè)計(jì)與調(diào)試4、1#UART程序設(shè)計(jì)程序設(shè)計(jì)與調(diào)試4、1#UART程序設(shè)計(jì)(1)第2行:定義UART操作變量名為UART1_Handler,數(shù)據(jù)類型固定為UART_HandleTypeDef,用于指出用哪個(gè)UART,怎么發(fā)送或接收,具體要求參見表9.2.1。(2)第4~14行:UART初始化函數(shù)。該函數(shù)帶一個(gè)參數(shù)baund,用于指出波特率。(3)第5~11行用于設(shè)置變量UART1_Handler,指出使用USART1,波特率=bound、數(shù)據(jù)位+校驗(yàn)位字長(zhǎng)=8、1個(gè)停止位、無(wú)校驗(yàn)位、無(wú)硬件流控制、數(shù)據(jù)發(fā)送和接收模式。對(duì)于本應(yīng)用,由于1#機(jī)只進(jìn)行數(shù)據(jù)發(fā)送,也可將其設(shè)置為數(shù)據(jù)發(fā)送模式(UART_MODE_TX)。(4)第13行調(diào)用UART初始化庫(kù)函數(shù)HAL_UART_Init(),按照變量UART1_Handler的值進(jìn)行UART初始化。該庫(kù)函數(shù)定義參見表9.2.2。(5)第19~35行:執(zhí)行UART初始化庫(kù)函數(shù)HAL_UART_Init()時(shí),會(huì)自動(dòng)調(diào)用庫(kù)函數(shù)HAL_UART_MspInit()。此庫(kù)函數(shù)內(nèi)容可自行編寫。我們?cè)谶@里開啟USART1和GPIOA時(shí)鐘,初始化USART1的引腳PA9(Tx)和PA10(Rx)。注意PA9應(yīng)設(shè)置為復(fù)用推挽輸出,PA10應(yīng)設(shè)置為復(fù)用輸入。程序設(shè)計(jì)與調(diào)試5、UART相關(guān)庫(kù)函數(shù)解讀表9.2.1

UART操作變量UART操作變量數(shù)據(jù)類型:

UART_HandleTypeDef

typedef

struct

{ USART_TypeDef *Instance;

//UART名,取值有5個(gè):USART1~USART3、UART4~UART5

UART_InitTypeDef

Init;

//UART初始化參數(shù),定義見本表第3、4行

uint8_t *pTxBuffPtr;

//UART發(fā)送緩沖區(qū)首地址,指針變量

uint16_t TxXferSize;

//UART發(fā)送緩沖區(qū)長(zhǎng)度

uint16_t TxXferCount;

//UART發(fā)送計(jì)數(shù)器uint8_t *pRxBuffPtr;

//UART接收緩沖區(qū)首地址,指針變量

uint16_t RxXferSize;

//UART接收緩沖區(qū)長(zhǎng)度

uint16_t RxXferCount;

//UART接收計(jì)數(shù)器

DMA_HandleTypeDef *hdmatx;

//DMA

發(fā)送參數(shù)

DMA_HandleTypeDef *hdmarx;

//DMA

接收參數(shù)HAL_LockTypeDef Lock;

//鎖定對(duì)象

__IO

HAL_UART_StateTypeDefgState;

//發(fā)送狀態(tài)

__IO

HAL_UART_StateTypeDefRxState //接收狀態(tài)__IOuint32_t ErrorCode;

//錯(cuò)誤代碼}UART_HandleTypeDef;

UART初始化數(shù)據(jù)類型:

UART_InitTypeDeftypedef

struct

{ uint32_t BaudRate;

//波特率

uint32_t WordLength;

//字長(zhǎng)(數(shù)據(jù)位+奇偶校驗(yàn)位)

,有8位和9位兩個(gè)取值://UART_WORDLENGTH_8B(8位)、

UART_WORDLENGTH_9B(9位)uint32_t StopBits;

//停止位,有1和2兩個(gè)取值:UART_STOPBITS_1、UART_STOPBITS_2uint32_t Parity;

//奇偶校驗(yàn)位,有三個(gè)取值://UART_PARITY_NONE(無(wú))、UART_PARITY_EVEN(偶)

、UART_PARITY_ODD(奇)

uint32_t Mode;

//模式,有三個(gè)取值://UART_MODE_RX(接收)、UART_MODE_TX(發(fā)送)、UART_MODE_TX_RX(發(fā)送-接收)uint32_t HwFlowCtl;

//硬件流控制,有四個(gè)取值:UART_HWCONTROL_NONE(無(wú))、

//UART_HWCONTROL_RTS、UART_HWCONTROL_CTS、UART_HWCONTROL_RTS_CTS uint32_t OverSampling;

//過(guò)采樣系數(shù),默認(rèn)為16。如果定義了USART_CR1_OVER8,則默認(rèn)為8。

}UART_InitTypeDef;程序設(shè)計(jì)與調(diào)試5、UART相關(guān)庫(kù)函數(shù)解讀表9.2.2

UART初始化庫(kù)函數(shù)UART初始化函數(shù):

HAL_UART_Init(&UART操作變量)函數(shù)原型:HAL_StatusTypeDefHAL_UART_Init(UART_HandleTypeDef

*huart)

功能:初始化UART,并隱性調(diào)用庫(kù)函數(shù)HAL_UART_MSPInit()。入口參數(shù):huart,指出對(duì)哪個(gè)UART/USART進(jìn)行初始化,如何初始化。數(shù)據(jù)類型為:

UART_HandleTypeDef

,結(jié)構(gòu)體變量,其定義見表9.2.1。返回值:類型為HAL_StatusTypeDef,有四個(gè)取值:HAL_OK=0x00;

HAL_ERROR=0x01;

HAL_BUSY=0x02;

HAL_TIMEOUT=0x03

UART初始化隱性調(diào)用函數(shù):

HAL_UART_MSPInit(UART_HandleTypeDef

*huart)函數(shù)原型:__weakvoidHAL_UART_MSPInit(UART_HandleTypeDef

*huart)

功能:會(huì)被

HAL_UART_Init()自動(dòng)調(diào)用,用于完善UART初始化內(nèi)容,例如開啟UART時(shí)鐘,初始化相關(guān)引腳,設(shè)置中斷等。程序設(shè)計(jì)與調(diào)試5、UART相關(guān)庫(kù)函數(shù)解讀表9.2.3

UART發(fā)送庫(kù)函數(shù)(查詢方式)查詢發(fā)送函數(shù):

HAL_UART_Transmit(&UART操作變量,&數(shù)據(jù)首地址,數(shù)據(jù)個(gè)數(shù),超時(shí)時(shí)間)函數(shù)原型:HAL_StatusTypeDef

HAL_UART_Transmit(UART_HandleTypeDef

*huart,

uint8_t

*pData,

uint16_t

Size,

uint32_t

Timeout)功能:按照huart的設(shè)置,以查詢方式進(jìn)行UART數(shù)據(jù)發(fā)送。發(fā)送數(shù)據(jù)的首地址由pData指出,數(shù)據(jù)串長(zhǎng)度是Size,超時(shí)時(shí)間是Timeout。入口參數(shù)1:huart,是UART操作變量,數(shù)據(jù)類型為UART_HandleTypeDef

,結(jié)構(gòu)體變量。指出用哪個(gè)USART/UART發(fā)送。入口參數(shù)2:pData,發(fā)送數(shù)據(jù)緩沖區(qū)首地址,指針變量。入口參數(shù)3:size,發(fā)送緩沖區(qū)長(zhǎng)度。入口參數(shù)4:Timeout,超時(shí)時(shí)間,單位是ms。返回值:HAL_StatusTypeDef,有四個(gè)取值:HAL_OK=0x00;

HAL_ERROR=0x01;

HAL_BUSY=0x02;

HAL_TIMEOUT=0x03表9.2.4

UART接收庫(kù)函數(shù)(查詢方式)查詢接收函數(shù):

HAL_UART_Receive(&UART操作變量,&數(shù)據(jù)首地址,數(shù)據(jù)個(gè)數(shù),超時(shí)時(shí)間)函數(shù)原型:HAL_StatusTypeDef

HAL_UART_Receive(UART_HandleTypeDef

*huart,

uint8_t

*pData,

uint16_t

Size,

uint32_t

Timeout)功能:按照huart的設(shè)置,以查詢方式進(jìn)行UART數(shù)據(jù)接收。接收數(shù)據(jù)首地址由pData指出,數(shù)據(jù)串長(zhǎng)度是Size,超時(shí)時(shí)間是Timeout。入口參數(shù)1:huart,是UART操作變量,數(shù)據(jù)類型為UART_HandleTypeDef

,結(jié)構(gòu)體變量。指出用哪個(gè)USART/UART接收。入口參數(shù)2:pData,接收數(shù)據(jù)緩沖區(qū)首地址,指針變量。入口參數(shù)3:size,接收緩沖區(qū)長(zhǎng)度。入口參數(shù)4:Timeout,超時(shí)時(shí)間,單位是ms。返回值:HAL_StatusTypeDef,有四個(gè)取值:HAL_OK=0x00;

HAL_ERROR=0x01;

HAL_BUSY=0x02;

HAL_TIMEOUT=0x03程序設(shè)計(jì)與調(diào)試6、按鍵程序程序設(shè)計(jì)與調(diào)試7、利用串口調(diào)試助手調(diào)試程序1、下載程序到開發(fā)板對(duì)以上程序進(jìn)行編譯生成,無(wú)錯(cuò)后下載到1#開發(fā)板。2、安裝串口調(diào)試助手3、安裝CH340驅(qū)動(dòng)4、打開調(diào)試助手調(diào)試程序程序設(shè)計(jì)與調(diào)試7、調(diào)試程序設(shè)計(jì)與調(diào)試8、2#機(jī)程序設(shè)計(jì)程序文件布局與框架搭建和流程圖程序設(shè)計(jì)與調(diào)試8、2#主程序設(shè)計(jì)(1)第6行:定義變量RX_Char,該變量用于存儲(chǔ)從UART接收到的數(shù)據(jù)。(2)第11行,初始化UART1,注意波特率必須和1#機(jī)相同。(3)第13行:使用了庫(kù)函數(shù)HAL_UART_Receive(),將UART收到的數(shù)據(jù)存入變量RX_Char。與庫(kù)函數(shù)HAL_UART_Transmit()類似,也有4個(gè)參數(shù),只是第2個(gè)參數(shù)用于指出將收到的數(shù)據(jù)存到哪里。(4)第14~24行:對(duì)收到的數(shù)據(jù)進(jìn)行判別,根據(jù)輸入命令的不同,控制LED亮滅。有關(guān)庫(kù)函數(shù)HAL_UART_Receive()的解釋,詳見表

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論