1.实验目的
2.环境搭建
3.实验结果与代码分析
4.调用层次分析
1.实验目的本实验主要在rv-star的板子上点亮rgb灯。
通过一个简单的gpio操作实验,分析riscv mcu目前的编程模型。
2.环境搭建实验下载操作可以按照我之前的文章来操作
首先导入工程
然后选择工程
调试选择openocd
最后,直接下载即可。
3.实验结果与代码分析入口在main函数
main函数中调用了led_config();函数
该函数的实现如下:
void led_config(void)
{
for(int i=0; i《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 board low layer led */
#define 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
*
etval none
*/
void gd_led_init(led_typedef_enum lednum)
{
/* enable the led clock */
rcu_periph_clock_enable(`[lednum]);
/* configure led gpio port */
gpio_init(gpio_port[lednum], gpio_mode_out_pp, gpio_ospeed_50mhz, gpio_pin[lednum]);
gpio_bop(gpio_port[lednum]) = gpio_pin[lednum];
}
首先调用rcu_periph_clock_enable初始化对于的gpio时钟。
对于gpio_clk有如下的定义。
static const rcu_periph_enum gpio_clk[ledn] = {ledg_gpio_clk,ledb_gpio_clk,ledr_gpio_clk};
#define ledg_pin gpio_pin_1
#define ledg_gpio_port gpioa
#define ledg_gpio_clk rcu_gpioa
#define ledb_pin gpio_pin_3
#define 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。
查看原理图
对应芯片的引脚
不难看出,操作一个gpio的流程主要是三部分
1.设置gpio时钟
2.设置初始化设置gpio
3.操作对应的gpio位
4.调用层次分析main--》gd32vf103_rvstar--》gd32vf103_xx.c--》寄存器操作
所以如果需要自己实现板子的定义,只需要修改gd32vf103_rvstar中间层即可。
原文标题:rv-star rgb led灯实验
文章出处:【微信公众号:嵌入式iot】欢迎添加关注!文章转载请注明出处。
一文读懂不同类型的晶振封装
浙江大学首批招收人工智能专业 学什么,要怎么教?
永别了 三星Note 7
常见的电源适配器经常会碰到那些问题
第三代CAN总线CAN-XL解析
在rv-star板子上点LED灯实验
作为一名人工智能从业者应该看到什么
LED驱动模块在汽车照明中的市场机遇
Java中 equals 方法的实现方式
电池内部X射线检查失效分析
三星Galaxy S11+参数进一步曝光 高配版将搭载1.08亿像素主摄并支持8K视频拍摄
鸿蒙报名入口
微软即将新推出Windows 10X系统
各类常用接地电阻的允许值
中兴通讯状告美国芯片厂商 索赔5500余万元
李开复:未来50%工作将被人工智能取代
嵌入式系统设计NI LabVIEW软件的十大特点
一文读懂LPC中的中断处理
看了三星S8的发布会,不知道大家对iPhone8的外观还满意吗?
诺基亚8强势回归:屏幕指纹识别+骁龙821!诺基亚将告别低配时代!