stm32 USART 主函式模組 庫函式

2021-06-28 00:43:48 字數 1790 閱讀 3922

//core_cm3.c與core_cm3.h:    提供核心介面

//system_stm32f10x.c與system_stm32f10x.h:       提供系統時鐘設定及匯流排時鐘,包含systeminit()函式

(各種結構體及巨集定義),提供系統暫存器的定義宣告及包裝記憶體操作

//startup_stm32f10x_hd.h:  啟動檔案主要是進行堆疊之類的初始化,中斷向量表及中斷函式定義

//stm32f10x_it.c與stm32f10x_it.h:               提供中斷服務函式

//stm32f10x_conf.h系統外設配置開關訊號

包含結構體變數與暫存器相對應操作)---stm32f10x_conf.h

//system_stm32f10x.c在實現系統時鐘的時候要用到pll(鎖相環),這就需要操作暫存器,暫存器都是以儲存器對映的方式來訪問的,所以該檔案中包含了stm32f10x.h 這個標頭檔案。

提供外設對核心中的nvic(中斷向量控制器)的訪問函式

#include //包含printf呼叫fputc的底層實現,int fputc(int ch, file *f)

#include "stm32f10x.h"

void usart_init(void);

void delay_init(void);

void delay_ms(u16 nms);

void delay_us(u32 nus);

static u8  fac_us=0;//us延時倍乘數

static u16 fac_ms=0;//ms延時倍乘數

int main(void)

case 1 :

default:  

}***=!***;

}times++;

delay_ms(10);   }}

void usart_init(void)

//初始化延遲函式

void delay_init()

//延時nus

void delay_us(u32 nus)

while(temp&0x01&&!(temp&(1<<16)));//等待時間到達   

systick->ctrl&=~systick_ctrl_enable_msk;       //關閉計數器

systick->val =0x00;       //清空計數器

}//延時nms

//systick->load為24位暫存器,所以,最大延時為:

//nms<=0xffffff*8*1000/sysclk

//sysclk單位為hz,nms單位為ms

//對72m條件下,nms<=1864 

void delay_ms(u16 nms)

while(temp&0x01&&!(temp&(1<<16)));//等待時間到達   

systick->ctrl&=~systick_ctrl_enable_msk;       //關閉計數器

systick->val =0x00;       //清空計數器

} /*使用microlib的方法,重定義fputc函式 */

int fputc(int ch, file *f)

return ch;

}int getkey (void)  

//重定義fputc函式 

//int fputc(int ch, file *f)

//

STM32USART串列埠通訊

問題描述 利用usart串列埠程式,實現pc與stm32通訊,計算機傳送資料,stm32接受後,再傳送給pc端 1.gpio埠配置 根據手冊 pa.9為tx 傳送 pa.10為rx 接受 因此 pa.9為復用推挽輸出,pa.10為浮空輸入,一行 搞定 void gpio config 2.配置usa...

stm32 USART 串列埠通訊

簡單區分同步和非同步就是看通訊時需不需要對外提供時鐘輸出 usart 有專門控制傳送的傳送器 控制接收的接收器,還有喚醒單元 中斷控制等等。使用 usart 之前需要向 usart cr1 暫存器的 ue 位置 1 使能 usart,ue 位用來開啟供給給串列埠的時鐘。傳送或者接收資料字長可選 8 ...

stm32 USART使用標誌

在usart的傳送端有2個暫存器,乙個是程式可以看到的usart dr暫存器,另乙個是程式看不到的移位暫存器,對應usart資料傳送有兩個標誌,乙個是txe 傳送資料暫存器空,另乙個是tc 傳送結束 當usart dr中的資料傳送到移位暫存器後,txe被設定,此時移位暫存器開始向tx訊號線按位傳輸資...