前面寫過一篇關(guān)于STM32單片機(jī)的GPIO的文章,本來是打著從實用角度來做的實驗,但是發(fā)現(xiàn)不積跬步無以至千里啊,咱們從頭開始,先做一個最簡單的,入門級的,單片機(jī)系統(tǒng)中的hello world,流水燈實驗!
我手中有一個神舟3的開發(fā)板,我就用這個板子來做實驗,板子中的實驗一共用到4個LED燈來做流水燈的實驗,這里我們也用這4個燈,他們分別是GPIOF中的6、7、8、9這4個。
1、首先我們復(fù)制我們之前做過的模板工程到一個新建文件夾中,(如,你可以取個名字叫流水燈實驗的文件夾)神舟開發(fā)板的例程中在項目中添加了兩個文件,分別是led.c和led.h,這是一種習(xí)慣,每做一個項目的時候都在其中添加一個.c和對應(yīng)的.h文件,這樣可以是工程看起來更加規(guī)整!本來我是不想添加這個的,這里為了良好的編程習(xí)慣,我們也添加一個!并且我更改了模板文件中的一些名字,在下圖中我將標(biāo)志出來
2、接下來我們來看一下程序,程序一共分為兩部分,一個main.c,一個led.c,因為程序比較簡單,所以在led.h中我們就不做任何定義了,這也省去了一些麻煩!按照習(xí)慣,我們先從main程序看起!
#include "stm32f10x.h"
#include "led.h"
void LED_config(void);//使用函數(shù)前先進(jìn)行函數(shù)聲明
/*******************************************************
* 函數(shù)名稱: delay
* 輸入: 無
* 輸出: 無
* 功能描述: 延時函數(shù)
*******************************************************/
void delay(vu32 nCount)
{
for(; nCount != 0; nCount--);
}
/*******************************************************
* 函數(shù)名稱: main
* 輸入: 無
* 輸出: 無
* 功能描述: 主函數(shù)
*******************************************************/
int main(void)
{
LED_config(); //調(diào)用4個LED燈初始化函數(shù)
while(1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_6);//第一燈亮
delay(800000); //延時
GPIO_SetBits(GPIOF,GPIO_Pin_6); //第一燈滅
delay(800000); //延時
GPIO_ResetBits(GPIOF,GPIO_Pin_7); //第二燈亮
delay(800000); //延時
GPIO_SetBits(GPIOF,GPIO_Pin_7); //第二燈滅
delay(800000); //延時
GPIO_ResetBits(GPIOF,GPIO_Pin_8); //第三燈亮
delay(800000); //延時
GPIO_SetBits(GPIOF,GPIO_Pin_8); //第三燈滅
delay(800000); //延時
GPIO_ResetBits(GPIOF,GPIO_Pin_9); //第四燈亮
delay(800000); //延時
GPIO_SetBits(GPIOF,GPIO_Pin_9); //第四燈滅
delay(800000); //延時
}
}
分析一下程序,LED_config();這個函數(shù)是調(diào)用了led.c中的函數(shù),一會會貼出led.c文件,GPIO_ResetBits、
GPIO_SetBits這兩個函數(shù)是庫文件為我們提供的GPIO操作函數(shù),我們貼出來看一下
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BRR = GPIO_Pin;
}
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BSRR = GPIO_Pin;
}
這兩個函數(shù)的作用就是將端口置1或者清0
我們再來看一下led.c文件
void LED_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 配置神舟III號LED燈使用的GPIO管腳模式*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); /*使能LED燈使用的GPIO時鐘*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF, &GPIO_InitStructure); /*神州III號使用的LED燈相關(guān)的GPIO口初始化*/
}
這里主要就是GPIO的配置,前面我們也說過,一共3個步奏,
1)、使能GPIOD的時鐘
2)、填充GPIO的屬性結(jié)構(gòu)體
3)、傳遞參數(shù)至初始化函數(shù)
這里要注意,我們將管腳模式配置為推挽輸出模式,這個需要注意一下,因為之后的實驗中我們還會給關(guān)鍵配置成其他的模式
程序編寫完畢,編譯下載到實驗板中完成實驗!
上一篇:初學(xué)STM32及GPIO入門之流水燈
下一篇:【STM32】入門 · 流水燈
推薦閱讀
史海拾趣
芯茂微電子自創(chuàng)立之初,就致力于高性能模擬及數(shù)?;旌霞呻娐返难邪l(fā)。經(jīng)過多年的努力,公司在BICMOS和BCD工藝平臺上取得了顯著的技術(shù)突破,成功開發(fā)出多款高性能、低功耗的集成電路產(chǎn)品。這些產(chǎn)品憑借卓越的性能和穩(wěn)定性,迅速獲得了市場的認(rèn)可,廣泛應(yīng)用于消費類電子、通信、計算機(jī)等領(lǐng)域。公司的技術(shù)實力和創(chuàng)新能力得到了業(yè)界的一致認(rèn)可,成為國內(nèi)集成電路設(shè)計領(lǐng)域的佼佼者。
ALSC深知品質(zhì)是企業(yè)的生命線。因此,公司建立了嚴(yán)格的質(zhì)量管理體系,從原材料采購到產(chǎn)品出廠的每一個環(huán)節(jié)都進(jìn)行嚴(yán)格把控。同時,公司還注重品牌建設(shè),通過廣告宣傳、參加展會等方式提升品牌知名度和美譽(yù)度。這些舉措使得ALSC在客戶心中樹立了良好的品牌形象。
1991年,高通的CDMA技術(shù)首次被商用于美國衛(wèi)星通信公司的無線電話網(wǎng),標(biāo)志著高通在移動通信領(lǐng)域的重大突破。與此同時,高通開始向智能手機(jī)芯片方向轉(zhuǎn)型,目標(biāo)是利用芯片技術(shù)使手機(jī)具備更強(qiáng)大的計算能力。隨著技術(shù)的不斷成熟,高通推出了多款性能卓越的移動應(yīng)用處理器,如Snapdragon系列,迅速占據(jù)了智能手機(jī)芯片市場的主導(dǎo)地位。這一轉(zhuǎn)型不僅鞏固了高通在移動通信領(lǐng)域的地位,也為公司的長期發(fā)展奠定了堅實基礎(chǔ)。
面對日益嚴(yán)峻的環(huán)境問題,CTC Coils Ltd公司積極響應(yīng)國家綠色發(fā)展的號召,開始實施綠色環(huán)保戰(zhàn)略。公司引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和工藝,優(yōu)化生產(chǎn)流程,減少能源消耗和廢物排放。同時,公司還研發(fā)出了一系列環(huán)保型電感線圈產(chǎn)品,滿足了市場對綠色電子產(chǎn)品的需求。
綠索超容深知技術(shù)創(chuàng)新是企業(yè)發(fā)展的核心動力。因此,公司積極與東南大學(xué)、南京大學(xué)等高校開展合作,引入具有自主知識產(chǎn)權(quán)的獨特技術(shù)和工藝,成功開發(fā)出GS系列有機(jī)雙電層超級電容及模組。這些產(chǎn)品不僅在性能上達(dá)到了國際領(lǐng)先水平,還獲得了多項技術(shù)專利。技術(shù)上的突破,不僅提升了綠索超容的市場競爭力,也為其贏得了業(yè)界的廣泛認(rèn)可。
你是不是公司里的“好好人”?如果一味地討好他人,你便會失去他人的尊重 每個公司都會有好好人,他們對于所有人都笑瞇瞇,對于所有人的要求都不會說“NO”。如果你是新進(jìn)入公司的員工,可能剛開始要得到其他同事的信任,需要討好別人,當(dāng)然這 ...… 查看全部問答∨ |
第二次世界大戰(zhàn)中英國發(fā)明的空中探測雷達(dá)對于探測飛機(jī)、火箭等目標(biāo)所作出的重大貢獻(xiàn)早已家喻戶曉。但是近二十年來將雷達(dá)用于探測地下目標(biāo)的技術(shù)獲得了長足的發(fā)展。要探測的地下目標(biāo)很多,包括金屬、文物、地下水,天然氣,尸體以及地下任何有斷層或 ...… 查看全部問答∨ |
1, Caution! All external camera interface IOs must not be combined with any other GPIO or bi-directional ports. 上面這句話,好像是所有camera 外部IO接口不能與其他GPIO及雙向口“結(jié)合”的意思,此處 ...… 查看全部問答∨ |
|
新建工程文件 仿真的時候出現(xiàn) 錯誤 target voltage seems to be below operating range for this device family. Make sure the target is powered on and try again 試過好幾次啦 都是這樣 望高人指點啊 … 查看全部問答∨ |
|
ISE中不能生成.xaw結(jié)構(gòu)設(shè)計向?qū)?/a> 最近遇到個問題,就是在ISE中新建dcm或pll 的architecture wizard時,一直新建不了,提示 ERROR:sim - Failed to generate \'dcm\'. Architecture Wizard process returned with an error. Wrote CGP file ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 阿里黑科技落地!夸克AI眼鏡全球首發(fā),高德、淘寶、支付寶都能用
- 化繁為簡, 適配復(fù)雜磁場環(huán)境,MT73xx 3D雙路輸出霍爾鎖存器賦能車規(guī)電機(jī)精準(zhǔn)控制
- 9.5億美元收購恩智浦MEMS傳感器業(yè)務(wù),意法半導(dǎo)體 在傳感器領(lǐng)域的地位再升級
- 高性能電動滑板車 BLDC 電機(jī)驅(qū)動器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計算+AI推理”一體化設(shè)計,PLC協(xié)議解析與缺陷檢測的實時聯(lián)動
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實時疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計
- 多模態(tài)融合感知的“語義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢”多模態(tài)交互設(shè)計
- 工業(yè)機(jī)器人高精度力控的“雙模融合”傳感器設(shè)計
- 銳智智能機(jī)器人控制器重磅問世,打破了國外工業(yè)機(jī)器人控制器的壟斷
- 人工智能機(jī)器人的到來,不僅不會搶走我們的飯碗還會創(chuàng)造更多的崗位
- 庫卡將計劃生產(chǎn)消費機(jī)器人,欲打造中國第一市場
- AI機(jī)器人,使無紙辦公成為現(xiàn)實不是夢
- 人工智能進(jìn)入旅游行業(yè),未來出門旅游機(jī)器人為你來規(guī)劃
- 潤欣科技子公司收購博思達(dá)24.99%股權(quán)
- 華潤微電子將在重慶 打造全國最大功率半導(dǎo)體基地
- 南京: 爭創(chuàng)國家智能制造發(fā)展新高地
- 士蘭微:2018年第一次臨時股東大會決議公告
- 英特爾CES發(fā)布自駕車進(jìn)展 盼吸引更多合作伙伴