- 文章作者:Wendell
- 原文地址:http://www.reibang.com/p/fd2491cb5b3f
- 轉(zhuǎn)載請(qǐng)注明出處!
說(shuō)明:
- 開(kāi)發(fā)環(huán)境:keil MDK V5.21.1.0
- 硬件平臺(tái):STM32F429-apollo開(kāi)發(fā)板(正點(diǎn)原子)
- Env工具:env_released_0.7.1
- RT-Thread版本: 3.1.1
- 本文以RT-Thread官網(wǎng)的AN0002 RT-Thread通用GPIO設(shè)備應(yīng)用指南為依據(jù),在STM32F429-apollo開(kāi)發(fā)板上進(jìn)行相應(yīng)實(shí)驗(yàn)主之。
配置工程
??在上一篇 AN0001 RT-Thread串口應(yīng)用指南學(xué)習(xí)筆記 中已經(jīng)完成了uart的學(xué)習(xí),現(xiàn)在我們?nèi)匀皇褂蒙弦黄惺褂玫墓こ涛募丛郑M(jìn)行GPIO設(shè)備的學(xué)習(xí)。
??在工程目錄下右擊,選擇ConEmu Here,打開(kāi)Env工具泽铛。在Env 命令行中輸入menuconfig,按enter鍵進(jìn)入配置界面辑鲤,使用menuconfig工具配置工程盔腔,找到下圖中間紅框選項(xiàng),路徑在左上角紅框內(nèi),使用空格鍵打開(kāi)該選項(xiàng)弛随,保存后退出澈蝙。
??Env 命令行中輸入pkgs --update,按enter鍵進(jìn)行軟件包的更新撵幽,如果本地已經(jīng)有所有需要的軟件包灯荧,則不做改變,如果有缺少的軟件包則會(huì)自動(dòng)從GitHub庫(kù)中下載盐杂。
加入代碼
??打開(kāi)rt-thread學(xué)習(xí)準(zhǔn)備一文中下載的“RT-Thread應(yīng)用筆記資料(STM32F429阿波羅)”逗载,在“通用GPIO設(shè)備應(yīng)用筆記”文件夾下有代碼文件 app_gpio.c、 app_gpio.h链烈,將這兩個(gè)文件拷貝到項(xiàng)目文件夾stm32f429-apollo\applications目錄下厉斟。
??Env工具是通過(guò)SConscript文件來(lái)組織文件的,手動(dòng)添加的文件會(huì)在下次使用Env工具時(shí)被刪除强衡,因此修改SConscript文件才是正確的添加方法擦秽!使用notepad++打開(kāi)applications文件夾中的SConscript文件,并按照?qǐng)D中位置添加app_gpio.c漩勤,保存后退出感挥。
??在Env命令行中使用scons --target=mdk5 -s命令重新生成工程并打開(kāi),可以看到app_gpio.c已經(jīng)成功添加到application目錄下!
??在application.c文件中添加頭文件
#include "app_uart.h"
??使用如下函數(shù)代替application.c文件的rt_application_init()函數(shù)
int rt_application_init(void)
{
rt_thread_t tid;
tid = rt_thread_create("init",
rt_init_thread_entry, RT_NULL,
2048, RT_THREAD_PRIORITY_MAX/3, 20);
if (tid != RT_NULL)
rt_thread_startup(tid);
tid = rt_thread_create("gpio",
gpio_thread_entry,
RT_NULL,
1024,
3,
10);
/* 創(chuàng)建成功則啟動(dòng)線程 */
if (tid != RT_NULL)
rt_thread_startup(tid);
return 0;
}
??編譯后下載到開(kāi)發(fā)板越败,指示燈DS0和DS1開(kāi)始以1秒為周期閃爍触幼,打開(kāi)串口調(diào)試助手XCOM V2.0,按照自己計(jì)算機(jī)顯示的com口編號(hào)配置好究飞,依次按下按鍵KEY0置谦、KEY1、KEY2亿傅、KEY_UP媒峡,串口輸出如下圖:
敲黑板!注意注意啦葵擎!
??實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn)使用中斷方式的KEY0(其它三個(gè)按鍵使用的查詢方式)行為異常谅阿,不能輸出指定內(nèi)容,和官方資料里給出的狀態(tài)完全不一致坪蚁。經(jīng)各種檢查測(cè)試后奔穿,考慮是按鍵沒(méi)有上拉電阻,IO內(nèi)部上拉能力有限導(dǎo)致?tīng)顟B(tài)不穩(wěn)定敏晤,在按鍵KEY0腳外接上拉電阻1K(1K~10K均可)后成功治療好該疑難雜癥贱田!