最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

stm32f103c8t6踩坑筆記(續(xù))

2021-08-08 18:12 作者:會(huì)整活的劍人  | 我要投稿

0.Introduction and purpose

這個(gè)專欄是某航儀光19級(jí)著名廢物曹**玩低檔stm32板子的記錄.估計(jì)寫了也沒人看.

在這個(gè)文章里面,我們的說下用stm32f103c8t6vs2019編寫STM32標(biāo)準(zhǔn)庫版的程序,實(shí)現(xiàn)跑馬燈和串口通信的過程,受硬件的限制我們只實(shí)現(xiàn)這兩個(gè)簡(jiǎn)單功能就可以洗洗睡了.

本文涉及位運(yùn)算內(nèi)容,如果感覺不會(huì)/不熟練可私信交流,或者后面再開個(gè)專欄.

p.s.?如果用到基于寄存器的STM32開發(fā),對(duì)硬件位運(yùn)算的掌握要求更高

1.Devices and?tools

硬件我們用 STM32F103C8T6最小系統(tǒng)板.為什么用這個(gè)板子,因?yàn)楹紺助教工資不夠入手以STM32F103ZET6最小系統(tǒng)為核心的多源感知綜合創(chuàng)新系統(tǒng)核心板(這么長(zhǎng)的名字,功能比最小系統(tǒng)板要強(qiáng)的多).因?yàn)闆]有相應(yīng)的硬件資源我們只有自己造了.配件主要有CH340G USB轉(zhuǎn)串口模塊,自制LED燈模塊,JLink調(diào)試器,jtag轉(zhuǎn)swd,面包線若干.

軟件我們主要用的JLink軟件(jlink,jflash) VS2019 VisualGDB 硬件驅(qū)動(dòng) 串口監(jiān)視器

2.Hardware?and software?preparation

step 1:連接電路(省略若干步)直接上結(jié)果.這是個(gè)細(xì)心活.需要注意檢查無誤了再上電.

fig.0 最終接好線的樣子
fig.1---fig.3 部分接線示意

step 2:按照上個(gè)文章的做法新建項(xiàng)目,修改配置(STM32標(biāo)準(zhǔn)庫 板載LED閃爍),改造項(xiàng)目文件

先在LEDBlink解決方案里面添加篩選器User(用于放自己寫的.c .cpp和.h文件)

在User里面添加兩個(gè)篩選器Inc(include,放header文件)和Src(source,放C語言和C++源代碼)

然后把生成的C++文件重命名為main.cpp(因?yàn)樵谶@個(gè)文件里寫main函數(shù))

step3.先造庫吧(因?yàn)槲覀儸F(xiàn)在幾乎什么都沒有),移植下正點(diǎn)原子的延時(shí)庫和串口庫(測(cè)試串口的時(shí)候要用).新建相應(yīng)的header和source文件.在header里面寫類型聲明和函數(shù)聲明.可以用C或者C++在source里面寫函數(shù).作為曾經(jīng)的航C豬腳本廢物用C寫的.

最終效果:

fig4. 項(xiàng)目結(jié)構(gòu)圖

上代碼辣,有bug歡迎指正:)

visualgdb需要自己造庫.造好了就稍微輕松些了

(1)延時(shí)

延時(shí)可以說是stm32編程里面用的最多的一個(gè)功能了.

文件內(nèi)容:

rcc時(shí)鐘初始化,延時(shí)功能初始化,延時(shí)若干us,延時(shí)若干ms

常用宏定義:最大值 最小值 循環(huán)左移位CROL 循環(huán)右移位CROR

CROL宏:對(duì)n位整數(shù)X循環(huán)左移i位 如果是8位整數(shù)一定沒有bug

CROR宏:對(duì)n位整數(shù)X循環(huán)右移i位

(a)delay.h

(b)delay.c 實(shí)現(xiàn)延時(shí)功能 RCC初始化

(2)串口函數(shù)

定義了裝數(shù)據(jù)的結(jié)構(gòu)變量.移植和包裝了若干和串口相關(guān)的函數(shù).可以實(shí)現(xiàn)波特率可修改,8位數(shù)據(jù)位,1位停止位,不帶校驗(yàn)位的通信.用的中斷法接收(要求必須遇到CRLF標(biāo)識(shí)一組數(shù)組接收結(jié)束),查詢法發(fā)送1字節(jié).?在此基礎(chǔ)上包裝了把接收到的若干數(shù)據(jù)復(fù)制到指定數(shù)組發(fā)送一個(gè)C風(fēng)格字符串的功能

擴(kuò)展玩法(且看后面幾個(gè)文章介紹,這里先咕了):

  1. 在USART2上接HC-04藍(lán)牙轉(zhuǎn)串口模塊和手機(jī)通信.可以實(shí)現(xiàn)手機(jī)遙控led(甚至是智能遙控小車,因?yàn)闆]有硬件就不做了)要求波特率9600

  2. 在USART3上連接arduino并通信.我的arduino用的是arduino nano(atmega328P芯片)主要功能是IIC轉(zhuǎn)串口.據(jù)說stm32f103c8t6的硬件iic有bug會(huì)卡暴斃,軟件iic事太多了我沒有搞明白,因此出此下策,用arduino的wire庫去實(shí)現(xiàn)iic通信.這樣可以讀取使用iic通信的傳感器(例如mpu6050陀螺儀傳感器)

(a)usart.h

(b)usart.c

3.LEDs Blink

用GPIO實(shí)現(xiàn)流水燈

上來必做兩件事 初始化RCC(時(shí)鐘) 初始化延時(shí)

為了做流水燈我們只需要初始化GPIO口就ok了

設(shè)置GPIOA組的A0,A1,...A7為推拉輸出

用一個(gè)整數(shù)ch表示GPIOA組的7,6,5,4,3,2,1,0號(hào)io口的狀態(tài),配合GPIO_Write一次操縱一組連續(xù)的io口.循環(huán)移位實(shí)現(xiàn)流水燈的效果

"流水燈"視頻的main.cpp代碼如下,"反向流水燈"只需要把循環(huán)右移(CROR)改成循環(huán)左移(CROL)即可

delay.h參見上文


fig5.實(shí)驗(yàn)指導(dǎo)書的思考題

對(duì)于這個(gè)思考題,我們甚至用不上循環(huán)移位運(yùn)算,只要寫一個(gè)for循環(huán)并且用移位運(yùn)算就ok了,如何實(shí)現(xiàn)這里就不展示了

4.Serial communication

把自制LED板子拔了,然后修改main.cpp代碼,usart.h參見上文

打開XCOM串口監(jiān)視器(也可以是別的串口軟件)進(jìn)行通信

fig6.串口通信的結(jié)果

后記:

感謝北航17系老師們的指導(dǎo)和幫助.更多的STM32踩坑文章要先咕一陣子了.

Reference:

1.北航儀光小學(xué)期實(shí)驗(yàn)指導(dǎo)書 基于 STM32 (F103ZET6)的系統(tǒng)實(shí)現(xiàn)

2.正點(diǎn)原子STM32F103示例代碼

3.STM32單片機(jī)應(yīng)用與全案例實(shí)踐 沈紅衛(wèi)等著 電子工業(yè)出版社

stm32f103c8t6踩坑筆記(續(xù))的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
双柏县| 名山县| 河曲县| 五家渠市| 鹤峰县| 乌海市| 台南县| 福州市| 葫芦岛市| 车险| 监利县| 井研县| 河池市| 射洪县| 上饶县| 荆门市| 大埔县| 榆中县| 南部县| 临安市| 临江市| 丹凤县| 垣曲县| 九龙城区| 同心县| 拉萨市| 云梦县| 洪江市| 荆门市| 巫山县| 怀仁县| 昭平县| 定结县| 杨浦区| 城市| 武城县| 辉南县| 交口县| 冀州市| 利津县| 岫岩|