STM32F103學習筆記(四) 串列埠實驗

2021-06-28 08:47:23 字數 2209 閱讀 1946

串列埠通訊,首先進行串列埠的設定:

串列埠設定的一般步驟可以總結為如下幾個步驟:

1) 串列埠時鐘使能, gpio 時鐘使能

2) 串列埠復位

3) gpio 埠模式設定

4) 串列埠引數初始化

5) 開啟中斷並且初始化 nvic(如果需要開啟中斷才需要這個步驟)

6) 使能串列埠

7) 編寫中斷處理函式

串列埠設定原子已經寫在usart.c裡邊了,會拉進來用就行了

//初始化 io 串列埠 1

//bound:波特率

void uart_init(u32 bound)

{gpio_inittypedef gpio_initstructure;

usart_inittypedef usart_initstructure;

nvic_inittypedef nvic_initstructure;

//①串列埠時鐘使能, gpio 時鐘使能,復用時鐘使能

rcc_apb2periphclockcmd(rcc_apb2periph_usart1|

rcc_apb2periph_gpioa, enable); //使能 usart1 ,gpioa 時鐘

//②串列埠復位

usart_deinit(usart1); //復位串列埠 1

//③gpio 埠模式設定

gpio_initstructure.gpio_pin = gpio_pin_9; //isart1_tx pa.9

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_initstructure.gpio_mode = gpio_mode_af_pp; //復用推挽輸出

gpio_init(gpioa, &gpio_initstructure); //初始化 gpioa.9

gpio_initstructure.gpio_pin = gpio_pin_10; //usart1_rx pa.10

gpio_initstructure.gpio_mode = gpio_mode_in_floating; //浮空輸入

gpio_init(gpioa, &gpio_initstructure); //初始化 gpioa.10

//④串列埠引數初始化

usart_initstructure.usart_baudrate = bound; //波特率設定

主要看主函式是怎麼寫的,main.c:

#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "usart.h"

int main(void)

{u8 t;

u8 len;

u16 times=0;

delay_init(); //延時函式初始化

nvic_configuration(); //設定 nvic 中斷分組 2

uart_init(9600); //串列埠初始化波特率為 9600

led_init(); //led 埠初始化

key_init(); //初始化與按鍵連線的硬體介面

while(1)

{if(usart_rx_sta&0x8000)

{ len=usart_rx_sta&0x3f; //得到此次接收到的資料長度

printf("\r\n 您傳送的訊息為:\r\n\r\n");

for(t=0;t

usart_rx_sta&0x8000)

{ len=usart_rx_sta&0x3f;

說實話,這兩句沒看懂,只知道

0x8000對應的2進製 100000000000000  ,

0x3fff 對應的2進製  0011111111111111

usart_senddata(usart1, usart_rx_buf[t]); //向串列埠 1 傳送資料

while(usart_getflagstatus(usart1,usart_flag_tc)!=set);

第一句,其實就是傳送乙個位元組到串列埠。第二句呢,就是我們在我們傳送乙個資料到串列埠

之後,要檢測這個資料是否已經被傳送完成了。 usart_flag_tc 是巨集定義的資料傳送完成標

識符

STM32F103學習筆記 (八) PWM輸出

脈衝寬度調製 pwm 是對脈衝寬度的控制。stm32 的定時器除了 tim6 和 7。其他的定時器都可以用來產生 pwm 輸出。其中高階定 時器 tim1 和 tim8 可以同時產生多達 7 路的 pwm 輸出。而通用定時器也能同時產生多達 4 路的 pwm 輸出,這樣,stm32 最多可以同時產生...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...