跑馬燈實驗和我為什么使用庫函數(shù)?_環(huán)球滾動
希望讀者能點贊,互動,分享,讓我更有動力,等我徹底寫完stm32的學習日志,我會制作成電子書,分享給大家。
我為什么使用庫函數(shù)進行編寫程序?
截至2020年8月28日,ST公司一共開發(fā)了三個庫,分別是標準外設(shè)庫(STD),HAL庫,LL庫,此前使用直接控制寄存器的方式控制微處理器,從開發(fā)時間上是寄存器--->標準外設(shè)庫--->HAL庫--->LL庫,其中寄存器的優(yōu)點是代碼量少,標準外設(shè)庫可移植性強,HAL庫和LL庫雖然代碼量少于標準外設(shè)庫和固定平臺的可移植性增強,但是在跨平臺的可移植性大大降低,各平臺的兼容性差,并且STM32Cube平臺有些臃腫,我鑒于學習時間和未來的跨平臺考慮,選擇了標準外設(shè)庫。
【資料圖】
下面開始正文:
跑馬燈實驗:
重要翻譯:
Reset Clock Controller ——RCC寄存器(復位時鐘控制器寄存器)
步驟:
確定stm32中的所需引腳的連接LED0-PB5LED1-PE5確定使用庫函數(shù)頭文件Stm32f10x_gpio.hStm32f10x_rcc.h源文件Stm32f10x_gpio.cStm32f10x_rcc.c一般常見庫函數(shù)重要函數(shù):1個初始化函數(shù):void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
作用:
初始化一個或者多個IO口(同一組)的工作方式和速度。該函數(shù)主要是操作GPIO_CRL(CRH)寄存器,在上拉或者下拉的時候有設(shè)置BSRR或者BRR寄存器
GPIOx: GPIOA~GPIOG
這里的 GPIO_InitTypeDef* GPIO_InitStruct為:
typedef struct { uint16_t GPIO_Pin; //指定要初始化的IO口 GPIOSpeed_TypeDef GPIO_Speed; //設(shè)置IO口輸出速度 GPIOMode_TypeDef GPIO_Mode; //設(shè)置工作模式:8種中的一個 }GPIO_InitTypeDef;
GPIO_Init函數(shù)初始化樣例:
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出 ,可高可低 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根據(jù)設(shè)定參數(shù)初始化GPIOB.5
2個讀取輸入電平函數(shù):uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);作用:讀取某個GPIO的輸入電平。實際操作的是GPIOx_IDR寄存器。
例如:
GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);//讀取GPIOA.5的輸入電平uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
作用:讀取某組GPIO的輸入電平。實際操作的是GPIOx_IDR寄存器。
例如:
GPIO_ReadInputData(GPIOA);//讀取GPIOA組中所有io口輸入電平
2個讀取輸出電平函數(shù):uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:讀取某個GPIO的輸出電平。實際操作的是GPIO_ODR寄存器。
例如:
GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5);//讀取GPIOA.5的輸出電平 uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
作用:讀取某組GPIO的輸出電平。實際操作的是GPIO_ODR寄存器。
例如:
GPIO_ReadOutputData(GPIOA);//讀取GPIOA組中所有io口輸出電平
4個設(shè)置輸出電平函數(shù):void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:設(shè)置某個IO口輸出為高電平(1)。實際操作BSRR寄存器
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:設(shè)置某個IO口輸出為低電平(0)。實際操作的BRR寄存器。
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
這兩個函數(shù)不常用,也是用來設(shè)置IO口輸出電平。
編程文件結(jié)構(gòu)圖:
硬件編程:
Led.h
#ifndef __LED_H #define __LED_H //#include "sys.h" //LED 端口定義 //#define LED0 PBout(5)// DS0-digital signal 0//#define LED1 PEout(5)// DS1 void LED_Init(void);//初始化 #endif
Led.c
#include "led.h" #include "stm32f10x.h"http://初始化 PB5 和 PE5 為輸出口.并使能這兩個口的時鐘 //LED IO 初始化 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //定義一個結(jié)構(gòu)體 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能 PB,PE 端口時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //指定端口,LED0-->PB.5 推挽輸出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //指定模式,推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度 GPIO_Init(GPIOB, &GPIO_InitStructure); //端口初始化 GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 輸出高電平 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 推挽輸出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); //端口初始化 GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 輸出高 }
main.c
#include "led.h" #include "delay.h" //#include "sys.h" #include "stm32f10x.h"http://跑馬燈實驗 int main(void) { delay_init(); //延時函數(shù)初始化 LED_Init(); //初始化與 LED 連接的硬件接口 while(1) { //LED0 =0; //LED1 =1; //delay_ms(1000); //延時 300ms //LED0 =1; //LED1 =0; //delay_ms(300); //延時 300ms GPIO_SetBits(GPIOB,GPIO_Pin_5);//置高電平 GPIO_SetBits(GPIOE,GPIO_Pin_5);//同上 delay_ms(3000); GPIO_ResetBits(GPIOB,GPIO_Pin_5);//置低電平 GPIO_ResetBits(GPIOE,GPIO_Pin_5); delay_ms(3000); } }
添加頭文件路徑,設(shè)置obj路徑,添加target文件夾和頭文件,源文件
按照上面的步驟設(shè)置,就可以完成最簡單的跑馬燈實驗。
標簽:
相關(guān)文章
跑馬燈實驗和我為什么使用庫函數(shù)?_環(huán)球滾動
?希望讀者能點贊,互動,分享,讓我更有動力,等我徹底寫完stm32的學習日志,我會制作成電子書,分享給大家
【報資訊】苯胺行情周報(5.1-5.8)
?5月8日,生意社苯胺基準價為11750 00元 噸,與本月初(11775 00元 噸)相比,下降了-0 21%。據(jù)生意社商品行情
一問到底丨90多米長“風車”葉片上高速 如何一路暢通?
?在公路上運輸風力發(fā)電機風車葉片,卡車在直行、轉(zhuǎn)彎時都很暢通。但兩個多月前,如何將這些“大家伙”運
夏季易發(fā)生細菌性食源性疾病 氣溫升高 小心病從口入 世界熱推薦
?天津北方網(wǎng)訊:隨著氣溫升高,各類病原微生物生長繁殖較快,細菌性食源性疾病進入高發(fā)期和易發(fā)期。市疾控中
跨境通將參加山西轄區(qū)上市公司投資者網(wǎng)上集體接待日活動-當前通訊
?為進一步加強與投資者的互動交流,公司將參加“2023年山西轄區(qū)上市公司投資者集體接待日活動”。
世界觀察:電力數(shù)據(jù)回暖 經(jīng)濟企穩(wěn)回升態(tài)勢持續(xù)
?多項電力數(shù)據(jù)顯示,今年以來,我國消費信心逐步回暖,企業(yè)開足馬力生產(chǎn),經(jīng)濟增長企穩(wěn)回升態(tài)勢明顯。一季度
波司登背景實控人10億元接盤會暢通訊
?會暢通訊則是國內(nèi)知名的云視頻品牌,從成立至今始終聚焦于音視頻通信服務(wù)領(lǐng)域,立志成為“中國最優(yōu)秀的云視
法甲-姆巴佩破門梅西遭三停 巴黎3-1特魯瓦6分領(lǐng)跑|今日報
?法甲-姆巴佩破門梅西遭三停巴黎3-1特魯瓦6分領(lǐng)跑,里奧梅西,特魯瓦,姆巴佩,維拉蒂,佩雷拉,法甲
云瀑萬頃!航拍江西廬山壯闊瀑布云美景_今日聚焦
?5月6日,江西廬山牯嶺山城涌現(xiàn)海量瀑布云濤,風云變幻間,再現(xiàn)“溪云初起日沉閣,山雨欲來風滿樓”詩中氣象
如果說你若成佛 歌詞_如果說你若成佛 當前消息
?1、阿彌陀佛,冤冤相報何時了,濫殺無辜制造地獄業(yè),六道輪回苦海無邊,放下屠刀,立地成佛,回頭是岸。2、
李一桐粉絲優(yōu)先招聘引爭議|天天新視野
?追星在很多人眼中都是一個十分花錢的愛好,畢竟粉絲和偶像之間的關(guān)系用一句話概括就是:你我本無緣,全靠我
24孔復音口琴教學視頻 24孔c調(diào)口琴bd譜大全集|天天快報
?今天來聊聊關(guān)于24孔復音口琴教學視頻,24孔c調(diào)口琴bd譜大全集的文章,現(xiàn)在就為大家來簡單介紹下24孔復音口
中控智慧考勤軟件下載_中控智慧考勤機使用說明 全球速看
?1、刷卡判斷身份時將卡在本機感應區(qū)輕輕一晃即可,切勿用卡片拍打機器。2、2.在初始化系統(tǒng)時,機器將會丟
海綿狀血管瘤_嬰幼兒血管瘤貼 天天觀熱點
?1、不用猶豫選擇二十局醫(yī)院吧這個醫(yī)院心腦科是這個醫(yī)院的名牌這個醫(yī)院就靠這個專科活的而且越辦越好我爺爺
新疆保險業(yè)首季提供風險保障超14萬億元-環(huán)球看點
?一季度,新疆保險業(yè)累計為實體經(jīng)濟提供風險保障14 59萬億元,賠付支出84 81億元。一季度,新疆保險業(yè)加快推
當前快播:3月我國汽車整車出口環(huán)比增長19.4% 同比增長1.6倍
?智通財經(jīng)APP獲悉,據(jù)中汽協(xié)整理的海關(guān)總署數(shù)據(jù)顯示,2023年3月,我國汽車整車出口環(huán)比增長19 4%,同比增長1
“富饒的神山”邁向深部勘采 國內(nèi)最大的鈮、鈧、螢石產(chǎn)業(yè)呼之欲出_全球快資訊
?坐擁世界第一大稀土礦藏、第二大鈮、釷礦以及國內(nèi)最大的螢石礦,白云鄂博被譽為“富饒的神山”,而背靠白云
人民幣國際化穩(wěn)步向前 今年一季度人民幣跨境結(jié)算規(guī)模穩(wěn)步擴大_環(huán)球看熱訊
?中銀證券全球首席經(jīng)濟學家管濤:人民幣作為融資貨幣的海外需求在逐漸增加,我們看到根據(jù)SWIFT(環(huán)球銀行金
電腦修音軟件推薦(電腦修音軟件哪個好)
?1、nEOiMAGING(光影魔術(shù)手)0 28┊數(shù)碼照片畫質(zhì)處理的軟件┊簡體中文綠色正式版“nEOiMAGING”是一個對數(shù)碼
世界今日報丨江川區(qū)氣象臺發(fā)布大風預警信號藍色預警【Ⅳ級/一般】【2023-05-07】
?江川區(qū)氣象臺2023年5月7日12時15分發(fā)布大風藍色預警信號:預計未來12小時江川區(qū)將受大風影響,平均風力可達
天舟六號計劃近日擇機發(fā)射 船箭組合體轉(zhuǎn)運至發(fā)射區(qū) 每日觀察
?天舟六號貨運飛船與長征七號遙七運載火箭組合體5月7日垂直轉(zhuǎn)運至發(fā)射區(qū),計劃于近日擇機實施發(fā)射。
焦點訊息:破41℃!海南這兩地熱到破紀錄
?海南省氣象臺預計,7日白天,定安、屯昌、澄邁、儋州、白沙、昌江和東方7個市縣的大部分鄉(xiāng)鎮(zhèn)將出現(xiàn)37℃以上
巴基斯坦總統(tǒng):要打造緊密牢固的巴中友誼|每日關(guān)注
?巴基斯坦總統(tǒng)阿爾維在伊斯蘭堡會見到訪的中國外交部長秦剛時表示,巴中友誼根植于兩國人民深厚的傳統(tǒng)情誼。
每日視訊:三明市3家企業(yè)入選省級博士后創(chuàng)新實踐基地
?東南網(wǎng)5月6日訊(本網(wǎng)記者蔡曉卿)近日,省人社廳公布的2023年新設(shè)立省級博士后創(chuàng)新實踐基地名單,三明推薦
動態(tài):時隔多年后的換代,這次再無對手 全新梅賽德斯-奔馳E級前瞻分析
?作為換代車型,全新奔馳E級(W214)之前是各種“擠牙膏”的方式給我們一點點透露信息,新車在造型和使用體
酒店住滿民宿爆火!旅游市場重回上行通道,行業(yè)堅定全面復蘇信心
?小豬民宿數(shù)據(jù)顯示,截至5月4日,平臺“五一”期間鄉(xiāng)村民宿訂單量同比增長超過7倍,平均客單價約為500元。不