今天要講的是串列埠通訊,個人覺得挺重要的,以後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....