(STM32)从零开始的RT-Thread之旅--GPIO

本文档详细介绍了在STM32上使用RT-Thread实时操作系统进行GPIO驱动的开发过程,包括创建BSP文件夹、编写LED和按键驱动代码,并实现中断功能来控制LED灯的亮灭。通过RTTStudio自动配置,无需手动设置引脚信息,简化了开发流程。
摘要由CSDN通过智能技术生成

无论什么开发板,最先调试的肯定是GPIO,一般用来用作指示灯或者按键输入。本篇只是很简单的GPIO应用,没有具体分析RTT框架实现。

首先先创建一个BSP文件夹,里面可以放各种板级驱动:

然后依次再在文件夹里创建相关文件:

然后再把头文件路径添加进去:

然后把新增的头文件目录添加进去:

准备工作做好,就可以添加驱动代码。这里我的开发板上的LED是PE3,按键输入是PC13

在led.c中代码十分简单:


#include <rtthread.h>
#include <rtdevice.h>
#include "led.h"

void led_on(void *args)
{
    rt_pin_write(LED_PIN_NUM, PIN_HIGH);
}

void led_off(void *args)
{
    rt_pin_write(LED_PIN_NUM, PIN_LOW);
}

void led_init(void)
{
    rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
    rt_pin_write(LED_PIN_NUM, PIN_LOW);
}

这个LED_PIN_NUM其实就是PE3的索引,我在led.h中定义它:

#ifndef BSP_INC_LED_H_
#define BSP_INC_LED_H_

#ifndef LED_PIN_NUM
    #define LED_PIN_NUM            67  /* PE3 */
#endif

void led_init(void);

#endif /* BSP_INC_LED_H_ */

它是怎么得到的呢?我们需要在drv_gpio.h中查询:

在这个文件中定义了一个数组,数组里面包含STM32最大引脚个数的所有引脚索引:

因为我们选择好MCU后RTT Studio就知道了我们芯片的封装,它会自动根据你芯片封装确定你芯片引脚个数,从而知道你的芯片有哪几个GPIO组,这些都不用我们关系和设置。从这个表里可以查到所有引脚的索引,比如我这里的:

然后看一下具体的引脚设置:

可以看到极其简单,其中引脚模式有几种:

然后按键使用了中断,具体设置如下:

至此框架已经搭建完毕,可以写个按键开关LED灯的测试代码:

只需要在key.c中添加:

#include <rtthread.h>
#include <rtdevice.h>
#include "key.h"
#include "led.h"
void key_irq(void *args)
{
    if(rt_pin_read(LED_PIN_NUM))
        rt_pin_write(LED_PIN_NUM, 0);
    else
        rt_pin_write(LED_PIN_NUM, 1);
}
void key_init(void)
{
    led_init();
    rt_pin_mode(KEY_PIN_NUM, PIN_MODE_INPUT_PULLDOWN);
    rt_pin_attach_irq(KEY_PIN_NUM, PIN_IRQ_MODE_RISING, key_irq, RT_NULL);
    rt_pin_irq_enable(KEY_PIN_NUM, PIN_IRQ_ENABLE);
}

然后在main.c中调用即可:

测试完成可以开始后续模块开发。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值