这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 在rv-star板子上点LED灯实验

共4条 1/1 1 跳转至

在rv-star板子上点LED灯实验

工程师
2021-04-08 23:55:13     打赏

1.实验目的

2.环境搭建

3.实验结果与代码分析

4.调用层次分析

1.实验目的本实验主要在rv-star的板子上点亮RGB灯。

通过一个简单的GPIO操作实验,分析 RISC V  MCU 目前的编程模型。

2.环境搭建实验下载操作可以按照我之前的文章来操作

首先导入工程

5ec83174-8ec6-11eb-8b86-12bb97331649.png

然后选择工程

调试选择openocd

5f7295f6-8ec6-11eb-8b86-12bb97331649.png

最后,直接下载即可。

3.实验结果与代码分析入口在main函数

main函数中调用了 led _config();函数

该函数的实现如下:

void led_config(无效)

{

为(int i = 0;  我《 LEDn;  i ++)

{

gd_rvstar_led_init(i);

gd_rvstar_led_on(i);

delay_1ms(1000);

gd_rvstar_led_off(i);

}

}

首先LEDn在gd32vf103_rvstar.h中

/ * rvstar板低层LED * /

#定义LEDn 3U

定义了三个LED。

接着调用gd_rvstar_led_init初始化gpio。

其实际的实现可以看如下的代码

/* Defines for LED functio/* Defines for LED / Key functions to new / general API */

#define gd_rvstar_led_init gd_led_init

#define gd_rvstar_led_on gd_led_on

#define gd_rvstar_led_off gd_led_off

#define gd_rvstar_led_toggle gd_led_toggle

实际上执行的是gd_led_init,现在看看该函数的实现

/* eval board low layer private functions */

/*!

* rief configure led GPIO

* param[in] lednum: specify the led to be configured

* arg LED1

* param[out] none

*

没有

*/

void gd_led_init(led_typedef_enum lednum)

{

/ *启用LED时钟* /

rcu_periph_clock_enable(`[lednum]);

/ *配置LED GPIO端口* /

gpio_init(G PI O_PORT [lednum],GPIO_MODE_OUT_PP,GPIO_ OSP EED_50MHZ,GPIO_PIN [lednum]);

GPIO_BOP(GPIO_PORT [lednum])= GPIO_PIN [lednum];

}

首先调用rcu_periph_clock_enable初始化对于的GPIO 时钟 。

对于GPIO_CLK有如下的定义。

静态常量rcu_periph_enum GPIO_CLK [LEDn] = {LEDG_GPIO_CLK,LEDB_GPIO_CLK,LEDR_GPIO_CLK};

#定义LEDG_PIN GPIO_PIN_1

#定义LEDG_GPIO_PORT GPIOA

#定义LEDG_GPIO_CLK RCU_GPIOA

#定义LEDB_PIN GPIO_PIN_3

#定义LEDB_GPIO_PORT GPIOA

#define LEDB_GPIO_CLK RCU_GPIOA

#define LEDR_PIN GPIO_PIN_2

#define LEDR_GPIO_PORT GPIOA

#define LEDR_GPIO_CLK RCU_GPIOA

简单的说,就是LED绿灯对应的是PA1,LED蓝灯对应PA3,LED红灯对应PA2。

查看原理图

6034df9e-8ec6-11eb-8b86-12bb97331649.png

对应芯片的引脚

60a18c70-8ec6-11eb-8b86-12bb97331649.png

不难看出,操作一个gpio的流程主要是三部分

1.设置GPIO时钟

2.设置初始化设置GPIO

3.操作对应的GPIO位

4.调用层次分析main--》gd32vf103_rvstar--》gd32vf103_xx.c--》 寄存器 操作




专家
2021-04-09 00:02:40     打赏
2楼

感谢楼主的分享,很实用了。


工程师
2021-04-09 00:11:36     打赏
3楼

感谢楼主的分享,很实用了。


工程师
2021-04-10 22:51:45     打赏
4楼

代码写的非常不错


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]