AN0002 RT-Thread通用GPIO设备应用指南学习笔记

  • 文章作者:Wendell
  • 原文地址:https://www.jianshu.com/p/fd2491cb5b3f
  • 转载请注明出处!

说明

  • 开发环境:keil MDK V5.21.1.0
  • 硬件平台:STM32F429-apollo开发板(正点原子)
  • Env工具:env_released_0.7.1
  • RT-Thread版本: 3.1.1
  • 本文以RT-Thread官网的AN0002 RT-Thread通用GPIO设备应用指南为依据,在STM32F429-apollo开发板上进行相应实验。

配置工程

  在上一篇 AN0001 RT-Thread串口应用指南学习笔记 中已经完成了uart的学习,现在我们仍然使用上一篇中使用的工程文件,进行GPIO设备的学习。
  在工程目录下右击,选择ConEmu Here,打开Env工具。在Env 命令行中输入menuconfig,按enter键进入配置界面,使用menuconfig工具配置工程,找到下图中间红框选项,路径在左上角红框内,使用空格键打开该选项,保存后退出。

image.png

  Env 命令行中输入pkgs --update,按enter键进行软件包的更新,如果本地已经有所有需要的软件包,则不做改变,如果有缺少的软件包则会自动从GitHub库中下载。

加入代码

  打开rt-thread学习准备一文中下载的“RT-Thread应用笔记资料(STM32F429阿波罗)”,在“通用GPIO设备应用笔记”文件夹下有代码文件 app_gpio.c、 app_gpio.h,将这两个文件拷贝到项目文件夹stm32f429-apollo\applications目录下。
  Env工具是通过SConscript文件来组织文件的,手动添加的文件会在下次使用Env工具时被删除,因此修改SConscript文件才是正确的添加方法!使用notepad++打开applications文件夹中的SConscript文件,并按照图中位置添加app_gpio.c,保存后退出。

image.png

  在Env命令行中使用scons --target=mdk5 -s命令重新生成工程并打开,可以看到app_gpio.c已经成功添加到application目录下!
image.png

  在application.c文件中添加头文件

#include "app_uart.h"

  使用如下函数代替application.c文件的rt_application_init()函数

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);
    /* 创建成功则启动线程 */
    if (tid != RT_NULL)
        rt_thread_startup(tid);

    return 0;
}

  编译后下载到开发板,指示灯DS0和DS1开始以1秒为周期闪烁,打开串口调试助手XCOM V2.0,按照自己计算机显示的com口编号配置好,依次按下按键KEY0、KEY1、KEY2、KEY_UP,串口输出如下图:


image.png

敲黑板!注意注意啦!
  实验过程中发现使用中断方式的KEY0(其它三个按键使用的查询方式)行为异常,不能输出指定内容,和官方资料里给出的状态完全不一致。经各种检查测试后,考虑是按键没有上拉电阻,IO内部上拉能力有限导致状态不稳定,在按键KEY0脚外接上拉电阻1K(1K~10K均可)后成功治疗好该疑难杂症!

你可能感兴趣的:(AN0002 RT-Thread通用GPIO设备应用指南学习笔记)