本文來源電子發(fā)燒友社區(qū),作者:chenzd, 帖子地址:https://bbs.elecfans.com/jishu_2307398_1_1.html
IO_HAL(項目體驗視頻,詳見作者原帖子)
1.項目概述:
key按下,即引腳PC.1有低電平輸入,此時led點亮,即PC.0為低電平;
key彈起,即引腳PC.1懸空,此時led熄滅,即PC.0為高電平。
2.軟件調(diào)試:
簡述hal庫的編程的理解:引入HAL層的概念,將軟件大致分為三類:第一類hal層:直接和硬件相關(guān),操作寄存器與原始的芯片api;第二類組件層:通過hal層間接操作硬件,只需要了解部分和組件直接相關(guān)的必要硬件信息即可,主要目的是實現(xiàn)組件功能,第三類應(yīng)用層:通過調(diào)用組件層,只關(guān)注功能,關(guān)注硬件。優(yōu)勢:1.有利于多人協(xié)同開發(fā):可以按三個層次對人員的工作進行分配,定義好接口,可實現(xiàn)三層軟件同時開發(fā),大大提高開發(fā)效率2.有利于不同平臺的移植:在移植時:應(yīng)用 層可不過修改,組件層修改量很少,只需要著重修改hal層就可滿足要求;
2.1Hal層:
目錄結(jié)構(gòu)如下圖所示:
2.1.1變量:
定義結(jié)構(gòu)體:
結(jié)構(gòu)體元素為初始化io引腳的必要元素如:端口號,序號,輸入輸出模式,初始電平;
typedefstruct
{
u32 gpio_sel; //port
u32 Pin; /*!< Specifies the GPIO pins to be configured.
This parameter can be any value of [url=home.php?mod=space&uid=1352397]@ref[/url] GPIO_pins_define */
SYS_GpioModeDef Mode; /*!< Specifies the operating mode for the selected pins.
This parameter can be a value of @ref GPIO_mode_define */
u8 Lev; //initial electrical level;
}GPIO_InitTypeDef;
2.1.2函數(shù):
用于初始化io引腳,
voidHAL_GPIO_Init( GPIO_InitTypeDef *GPIO_Init);
用于讀取引腳的電平狀態(tài)
u8HAL_GPIO_ReadPin(GPIO_InitTypeDef *GPIO_Init);
2.2組件層
目錄結(jié)構(gòu)如下圖所示:
初始化io引腳的步驟
- 定義結(jié)構(gòu)體變量
- 為結(jié)構(gòu)體變量賦值
- 引用hal函數(shù),即可實現(xiàn)引腳初始化
示例為led引腳初始化:
staticGPIO_InitTypeDef GPIO_LED0;
voidLedInit()
{
GPIO_LED0.gpio_sel = GPIOC_BASE_ADDR;
GPIO_LED0.Pin = GPIO_PIN0;
GPIO_LED0.Mode = *SYS_GPIO_OUTPT* ;
GPIO_LED0.Lev = 1;
HAL_GPIO_Init(&GPIO_LED0);
}
voidLedOn();
voidLedOff();
讀取引腳的電平狀態(tài)如下所示:
u8GetKeyState()
ret = HAL_GPIO_ReadPin(&GPIO_KEY0);
2.3應(yīng)用層
目錄結(jié)構(gòu)如圖所示:
voidUserFunction1()
{
KeyInit();
LedInit();
**while** (1)
{
**if** (GetKeyState() == 0)
{
LedOn();
}
**else**
{
LedOff();
}
}
}
整體軟件的目錄結(jié)構(gòu)為,如下圖所示:
3.硬件接入:
獨立按鍵key連接引腳PC.1,key按下,有低電平輸入,key彈起,即懸空;
led連接引腳PC.0,led為共陽極,低電平點亮;
硬件接線如下圖所示:
4.視頻演示:
實際現(xiàn)象與描述一致。
5.建議
建議在開發(fā)板的硬件電路中增加led,key,3.3v/5v電源,電源開關(guān),以及復(fù)位按鍵,可以提高開發(fā)者的開發(fā)效率。
發(fā)布評論請先 登錄
【道生物聯(lián)TKB-620開發(fā)板試用】開箱&amp;開發(fā)板說明&amp;未來試用計劃
有獎丨米爾 瑞芯微YR3562開發(fā)板免費試用

飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之LED
dsPIC33EDV64MC205電機控制開發(fā)板用戶指南

【敏矽微ME32G070開發(fā)板免費體驗】之開發(fā)板資源&gt;ADC測試
【敏矽微ME32G070開發(fā)板免費體驗】+ADC測試與LED點亮
【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】01、點亮LED
【RA-Eco-RA2E1-48PIN-V1.0開發(fā)板試用】LED燈切換點亮
追加名額丨米爾瑞芯微RK3576開發(fā)板有獎試用

有獎丨米爾 瑞芯微RK3576開發(fā)板免費試用

能力再次提升! 迅為RK3588/RK3568開發(fā)板&amp;amp;核心板新增定制分區(qū)鏡像

onsemi LV/MV MOSFET 產(chǎn)品介紹 &amp;amp; 行業(yè)應(yīng)用

評論