USART的韌體庫程式設計

2021-10-03 22:10:51 字數 2320 閱讀 4716

注:所有的函式宣告需要在標頭檔案中

void usart_config(void);

unsigned char usart_sendchar(usart_typedef* usartx,unsigned char ucchar);

void usart_sendbyte(usart_typedef* usartx,uint8_t data);

usart的韌體庫程式設計主要有以下幾個方面:

1、初始化串列埠需要用到的gpio

gpio和usart1的時鐘在apb2上,其他的串列埠在apb2上,gpio初始化輸入的時候需要不配置速度,輸出的時候需要速度。

gipo的輸入方式有

模擬輸入: gpio_mode_ain

浮空輸入: gpio_mode_in_floating

下拉輸入: gpio_mode_ipd

上拉輸入: gpio_mode_ipu

輸出方式有:

開漏輸出:gpio_mode_out_od

推挽輸出:gpio_mode_out_pp

復用開漏輸出: gpio_mode_af_od``

復用推挽輸出: gpio_mode_af_pp

gpio的速度有:

10mhz: gpio_speed_10mhz

2mhz : gpio_speed_2mhz,

50mhz : gpio_speed_50mhz

gpio的初始化**:

//配置 tx的gpio為推挽復用模式,輸出需要配置速度,輸入不需要配置速度

gpio_initstructure.gpio_pin =gpio_pin_2;

gpio_initstructure.gpio_mode =gpio_mode_af_pp;

gpio_initstructure.gpio_speed =gpio_speed_50mhz;

gpio_init(gpioa,&gpio_initstructure);

//配置rx的gpio為浮空輸入模式

gpio_initstructure.gpio_pin =gpio_pin_3;

gpio_initstructure.gpio_mode =gpio_mode_in_floating;

gpio_init(gpioa,&gpio_initstructure);

2、初始化串列埠

串列埠有波特率、資料位、停止位、校驗位、選擇輸入或者輸出方式,波特率要與串列埠除錯助手的波特率一致,配置一致

//初始化usart2(波特率,預設為8個資料位,1個停止位,無校驗位,可以接收和傳送)

usart_initstructure.usart_baudrate =9600;

usart_initstructure.usart_wordlength =usart_wordlength_8b;

usart_initstructure.usart_stopbits =usart_stopbits_1;

usart_initstructure.usart_parity =usart_parity_no;

usart_initstructure.usart_mode =usart_mode_rx | usart_mode_tx;

usart_initstructure.usart_hardwareflowcontrol =usart_hardwareflowcontrol_none;//控制流

usart_init(usart2,&usart_initstructure);

3、串列埠使能

//允許usart2

usart_cmd(usart2, enable);

//允許usart2接收中斷

usart_itconfig(usart2, usart_it_txe, enable);

4、編寫傳送和接收函式

傳送乙個字元或者數字

//傳送字元函式

unsigned char usart_sendchar(usart_typedef* usartx,unsigned char ucchar)

//傳送數字

void usart_sendbyte(usart_typedef* usartx,uint8_t data)

主函式中呼叫函式即可

編譯程式之後,燒錄成功,開啟串列埠除錯助手,配置,就能在串列埠除錯助手的接收區接收到傳送的資料

韌體庫程式設計(3) 位帶操作

位線操作是把暫存器中的某個位單獨拿出來,放在位帶區,並且在位帶別名區重新膨脹為1個字,但只能對這個位進行操作。通過訪問位帶別名區來訪問某個單獨的位。位帶區的每乙個位都是通過對位帶別名區的位址來訪問。位帶區乙個位,對應位帶別名區乙個字 即4個位元組 在 cm3中,有兩個區中實現了位帶。其中乙個是 sr...

初識韌體庫

1.韌體的含義 韌體 firmware 就是寫入erom 可擦寫唯讀儲存器 或eeprom 電可擦可程式設計唯讀儲存器 中的程式,它是軟體。韌體是指裝置內部儲存的裝置 驅動程式 通過韌體,作業系統才能按照標準的裝置驅動實現特定機器的執行動作,比如光碟機 燒錄機等都有內部韌體。韌體是擔任著乙個系統 最...

修改USB韌體庫的Customer HID例程

我用的是神州三號開發板子,板子的usb模組原理圖為 配置埠g的11號引腳為usb的使能引腳,按理來說應該是開漏輸出的 看了很多的修改 都是這個模式 不過就是不能使能usb,只能配置成推挽的才行,不知道為什麼,不知道有沒有人知道這個,求解答?gpio initstructure.gpio pin us...