进入官网下载RT thread软件后,尝试点亮LED灯。
官网提供了点亮LED的相关代码,点击:资料→文档中心→Demo示例→蜂鸣器播放器→简介→第1节:使用PIN设备控制LED,有详细的介绍,最后有获取相应代码的链接。
在RT thread新建项目,选择对应的芯片,调试器选择ST-LINK,建立项目。
在applications中新建文件,这里需要led.h和led.c两个文件。
led.h:
#ifndef LED_H
#define LED_H
#include <board.h>
#include <rtdevice.h>
#define LED_PIN GET_PIN(B, 0)
int led_init(void); //LED 灯初始化
int led_on(void); //LED 灯亮
int led_off(void); //LED 灯灭
int led_toggle(void); //LED 灯亮灭状态翻转
#endif
这里LED_PIN的宏定义要选择板子上面对应LED的引脚,比如我的板子上面的LED是PB0,就写 GET_PIN(B, 0)。
led.c:
#include <rtdevice.h>
#include "led.h"
int led_init(void)
{
/* 设定 LED 引脚为推挽输出模式 */
rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
return 0;
}
int led_on(void)
{
/* 调用 API 输出高电平 */
rt_pin_write(LED_PIN, PIN_HIGH);
return 0;
}
int led_off(void)
{
/* 调用 API 输出低电平 */
rt_pin_write(LED_PIN, PIN_LOW);
return 0;
}
int led_toggle(void)
{
/* 调用 API 读出当前电平 然后输出相反电平 */
rt_pin_write(LED_PIN, !rt_pin_read(LED_PIN));
return 0;
}
这里注意led_on和led_off函数的rt_pin_write后面的引脚电位高低要根据实际情况来定,比如我的LED的高电平触发点亮的,故led_on中的rt_pin_write选择 PIN_HIGH,led_off则选择PIN_LOW。
main.c:
#include <rtthread.h>
#include "led.h"
int main(void)
{
/* user app entry */
led_init();
led_on();
while (1)
{
led_toggle();
rt_thread_mdelay(500);
}
对程序进行编译和下载后,LED点亮。
注意:使用RT thread 官网提供的代码可能会报错,需要在led.h上面加入宏定义:
#include <board.h>
#include <rtdevice.h>
问题解决。