STM32小白入門(第六天) 串列埠通訊

2021-08-25 08:21:20 字數 2930 閱讀 7513

今天要講的是串列埠通訊,個人覺得挺重要的,以後usart、藍芽通訊,485等等都要用到串列埠,面試官也喜歡問一些串列埠的問題,比如問你串列埠引數,資料位幾位,波特率多少,還會問你怎樣設定串列埠等等。

一、串列埠概述定義

串列埠通訊是一種裝置間非常常用的序列,以位元位的形式傳送或接收資料,電子工程師經常使用這種方式來除錯資料。

開發板硬體用於串列埠跟pc相連的時候有以下注意事項:

a. 使用到usb轉串列埠,所以得安裝驅動

b. 跳線帽要進行短接

這裡寫描述

二、程式設計

1、設定引腳功能復用

rcc_ahb1periphclockcmd(rcc_ahb1periph_gpioa,enable); //使能gpioa時鐘

rcc_apb2periphclockcmd(rcc_apb2periph_usart1,enable); //使能usart1時鐘

//串列埠1對應引腳復用對映

gpio_pinafconfig(gpioa,gpio_pinsource9,gpio_af_usart1);//gpioa9復用為usart1

gpio_pinafconfig(gpioa,gpio_pinsource10,gpio_af_usart1);//gpioa10復用為usart1

//usart1埠配置

gpio_initstructure.gpio_pin = gpio_pin_9 | gpio_pin_10;//gpioa9與gpioa10

gpio_initstructure.gpio_mode = gpio_mode_af; //復用功能

gpio_initstructure.gpio_speed = gpio_speed_50mhz; //速度50mhz

gpio_initstructure.gpio_otype = gpio_otype_pp; //推挽復用輸出

gpio_initstructure.gpio_pupd = gpio_pupd_up; //上拉

gpio_init(gpioa,&gpio_initstructure); //初始化pa9,pa10

2、串列埠引數配置

//usart1 初始化設定

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

usart_initstructure.usart_wordlength = usart_wordlength_8b; //字長為8位資料格式

usart_initstructure.usart_stopbits = usart_stopbits_1; //乙個停止位

usart_initstructure.usart_parity = usart_parity_no; //無奇偶校驗位

usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none; //無硬體資料流控制

usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx; //收發模式

usart_init(usart1, &usart_initstructure); //初始化串列埠1

usart_cmd(usart1, enable); //使能串列埠1

//usart_oversampling8cmd(usart1,enable);//在超高速的波特率才開啟,如5mhz頻率。正常很少有裝置達到這麼高的速度
3、串列埠中斷配置

usart_itconfig(usart1, usart_it_rxne, enable); //開啟相關中斷

//usart1 nvic 配置

nvic_initstructure.nvic_irqchannel = usart1_irqn; //串列埠1中斷通道

nvic_initstructure.nvic_irqchannelpreemptionpriority=3; //搶占優先順序3

nvic_initstructure.nvic_irqchannelsubpriority =3; //子優先順序3

nvic_initstructure.nvic_irqchannelcmd = enable; //irq通道使能

nvic_init(&nvic_initstructure); //根據指定的引數初始化vic暫存器

4. 傳送函式的編寫` void usart1_send_bytes(uint8_t *pbuf,uint32_t len) }

//重定義fputc

intfputc(int ch,file *f)

STM32小白入門(第16天) 紅外

一 定義 遠端遙控技術又稱為遙控技術,是指實現對被控目標的遙遠控制,在工業控制 航空航天 家電領域應用廣泛。紅外遙控是一種無線 非接觸摸制技術,具有抗干擾能力強,資訊傳輸可靠,功耗低,成本低,易實現等顯著優點,被諸多電子裝置特別是家用電器廣泛採用,並越來越多的應用到計算機和手機系統中。隨著家用電器 ...

Python七天入門 第六天

以正確數量和順序宣告的引數 def f a,b print a,b f 1,2 1,2按順序傳遞到a和b中 函式呼叫時以關鍵字傳遞,可以更改順序.def f a,b print a,b f b 2,a 1 形參中設定預設值的引數,需要放在普通引數後面.def f a,b,c 3 print a,b,...

LabVIEW入門第六天(布林控制項及布林量)

布林量是在程式設計中常用的一種資料型別,它的值只有兩種,true 真 false 假 相當於數值的0 1,在labview他以控制項的形式存在,所在位置如下圖 分別對應布林控制項和布林運算。注 在前面板控制項上右擊開啟屬性選單,裡面可以設定顯示顏色,標籤,文字,觸發方式等屬性。布林控制項的作用 1....