复制文件可以参考 Hello HSPI 项目即可,这里就不在写其步骤:
函数介绍
设置引脚模式
此函数可以设定指定引脚的工作模式。
c
void rt_pin_mode ( rt_base_t pin,
rt_base_t mode
)
1
2
3
2
3
函数参数和返回值含义如下:
- 参数:
- pin 引脚编号
- mode 引脚工作模式,可以取以下 5 种模式之一
参数 | 说明 |
---|---|
PIN_MODE_OUTPUT | 输出 |
PIN_MODE_INPUT | 输入 |
PIN_MODE_INPUT_PULLUP | 上拉输入 |
PIN_MODE_INPUT_PULLDOWN | 下拉输入 |
PIN_MODE_OUTPUT_OD | 开漏输出 |
- 返回:空
设置引脚电平
此函数可以设定指定引脚的输出电平。
c
void rt_pin_write ( rt_base_t pin,
rt_base_t value
)
1
2
3
2
3
- 参数:
- pin 引脚编号
- value 电平逻辑值,可取 2 种值之一,PIN_LOW 低电平,PIN_HIGH 高电平
- 返回:空
读取引脚电平
该函数可以读取指定引脚的当前电平。
c
int rt_pin_read ( rt_base_t pin )
1
- 参数:
- pin 引脚编号
- 返回:PIN_LOW 低电平;PIN_HIGH 高电平
程序编写
我们需要增加宏定义#define PIN 20 sf32lb52 系列芯片,引脚编号与硬件pad相同,也就是说 PA_20 可以直接写 20 在文件中增加 #include <board.h> 如果不包含,可能会遇到错误提示没有定义。
这里我们以GPIO_20为例,每隔1S翻转一次。
c
#include "rtthread.h"
#include "bf0_hal.h"
#include "drv_io.h"
#include "stdio.h"
#include "string.h"
#include <board.h>
#define PIN 20
/*
- Function : GPIO_Init()
- Description : GPIO初始化函数
- Input : 无
- Return : 无
- Other : 无
*/
void GPIO_Init(void)
{
rt_pin_mode(PIN, PIN_MODE_OUTPUT); // 配置为输出模式
}
/**
* @brief Main program
* @param None
* @retval 0 if success, otherwise failure number
*/
int main(void)
{
GPIO_Init(); // GPIO初始化
while (1)
{
rt_pin_write(PIN, PIN_HIGH); // 设置引脚高电平
rt_thread_mdelay(1000); // 延时1000ms
rt_pin_write(PIN, PIN_LOW); // 设置引脚低电平
rt_thread_mdelay(1000); // 延时1000ms
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
有条件的同学可以那个示波器打一下波形。如下图所示: