基于RT-Thread Studio下的正点原子STM32F103ZET6开发————(3)点灯大师

本文介绍了如何在STM32平台使用GPIO控制LED灯,包括设置工作模式、输出电平以及利用rt_thread_mdelay实现动态效果。作者展示了如何在正点原子精英版中配置PB5和PE5引脚作为LED,通过编程控制它们的亮灭状态。
摘要由CSDN通过智能技术生成

更改完时钟源后,我们接下来就进行GPIO点灯,成为点灯大师

我们打开正点原子精英版的原理图,找到LED,可以看到有两个LED灯给我们进行配置,分别是PB5和PE5,根据二极管导通,为低电平即点亮,高电平熄灭

接下来就进行GPIO配置实现点灯

我们在工程的drv_common.h中可以找到一个宏,这是一个获取相应的GPIO管脚定义好的宏

#define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__STM32_PORT(PORTx) - (rt_base_t)GPIOA_BASE)/(0x0400UL) )) + PIN)

我们在工程的pin.c中可以找到配置GPIO的相关的函数

void rt_pin_mode(rt_base_t pin, rt_uint8_t mode)
设定指定引脚的工作模式
参数
    pin:  引脚编号
    mode: 工作模式
PIN_MODE_OUTPUT              普通输出模式  
PIN_MODE_INPUT               输入模式
PIN_MODE_INPUT_PULLUP        上拉输入  
PIN_MODE_INPUT_PULLDOWN      下拉输入
PIN_MODE_OUTPUT_OD           开漏输出模式
void rt_pin_write(rt_base_t pin, rt_uint8_t value)
设定指定引脚的输出电平
参数
    pin:     引脚编号
    value:   电平逻辑值
PIN_LOW  低电平
PIN_HIGH 高电平
rt_int8_t rt_pin_read(rt_base_t pin)
读取指定引脚的当前电平
参数
    pin: 引脚编号
返回
PIN_LOW  低电平
PIN_HIGH 高电平

接下来我们就用上面的宏和函数,点亮开灯,成为点灯大师

#include <rtthread.h>
#include <drv_common.h>
#include <rtdevice.h>
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#define RED_LED     GET_PIN(B,5)
#define GREEN_LED   GET_PIN(E,5)

int main(void)
{
    int count = 1;
    rt_pin_mode(RED_LED, PIN_MODE_OUTPUT);
    rt_pin_mode(GREEN_LED, PIN_MODE_OUTPUT);
    rt_pin_write(RED_LED, PIN_LOW);
    rt_pin_write(GREEN_LED, PIN_LOW);
    while (count++)
    {
        LOG_D("Hello RT-Thread!");
        rt_thread_mdelay(1000);
    }

    return RT_EOK;
}

编译烧录,可以看到成功点灯

我们还可以通过ms级延时函数,实现流水灯和跑马灯等花式点灯

rt_err_t rt_thread_mdelay(rt_int32_t ms)
将使当前线程延迟几毫秒
参数    
ms: 延时时间
返回
RT_EOK

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱跑流水灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值