嵌入式技术论坛
直播中

小刘

11年用户 3959经验值
私信 关注
[经验]

RISC-V架构开发板AB32VG1测评之GPIO点灯

一、介绍


AB32VG1 开发板是以中科蓝讯 (Bluetrum) 公司推出的基于RISC-V 架构的高配置芯片 AB32VG1 为核心所组成的。

· CPU: AB32VG1 (LQFP48 封装,主频 120M ,片上集成
RAM 192K, flash 8Mbit,ADC,PWM,USB,UART,IIC 等资源)

· 搭载蓝牙模块
· 搭载FM模块
· 一路 TF Card 接口
· 一路 USB 接口
· 一路 IIC 接口
· 一路音频接口 (美标 CtiA)
· 六路 ADC 输入引脚端子引出
· 六路 PWM 输出引脚端子引出
· 一个全彩 LED 灯模块,一个电源指示灯,三个烧录指示灯
· 一个 IRDA (红外接收端口)
· 一个 Reset 按键,三个功能按键 (通用版为两个功能按键
)
· 板子规格尺寸:6cm * 9cm

扩展接口,方便二次开发


二、实验准备
第一步:
安装 rt-thread studio 默认安装即可


第二步:
配置安装 rt-thread studio




三、创建第一个项目



·引脚PA1对应RGB灯的蓝灯
· 引脚PE1对应RGB灯的红灯
· 引脚PE4对应RGB灯的绿灯
RGB为共阴极。

  1. *.h文件
  2. #ifndef __LED_H__
  3. #define __LED_H__

  4. #include "board.h"


  5. #define ON 1
  6. #define OFF 0
  7. struct RGBLeds {
  8.     uint8_t LED_R;
  9.     uint8_t LED_B;
  10.     uint8_t LED_G;
  11. };

  12. void RGBLeds_Init(void);
  13. void RGBLeds_Red(rt_bool_t status);
  14. void RGBLeds_Blue(rt_bool_t status);
  15. void RGBLeds_Green(rt_bool_t status);
  16. void RunningWaterLamp(void);
  17. #endif
  1. *.c文件
  2. #include "led.h"


  3. struct RGBLeds Led;

  4. void RGBLeds_Init(void){
  5.     // 获得led成员对应引脚地址
  6.     Led.LED_R = rt_pin_get("PE.1");
  7.     Led.LED_G = rt_pin_get("PE.4");
  8.     Led.LED_B = rt_pin_get("PA.1");
  9.     // 设置引脚为输出方式
  10.     rt_pin_mode(Led.LED_R, PIN_MODE_OUTPUT);
  11.     rt_pin_mode(Led.LED_G, PIN_MODE_OUTPUT);
  12.     rt_pin_mode(Led.LED_B, PIN_MODE_OUTPUT);
  13. }


  14. void RGBLeds_Red(rt_bool_t status){
  15.     if (status) {
  16.         rt_pin_write(Led.LED_R, PIN_LOW);
  17.     }else {
  18.         rt_pin_write(Led.LED_R, PIN_HIGH);
  19.     }
  20.     rt_pin_write(Led.LED_G, PIN_HIGH);
  21.     rt_pin_write(Led.LED_B, PIN_HIGH);
  22. }

  23. void RGBLeds_Blue(rt_bool_t status){
  24.     if (status) {
  25.         rt_pin_write(Led.LED_B, PIN_LOW);
  26.     }else {
  27.         rt_pin_write(Led.LED_B, PIN_HIGH);
  28.     }
  29.     rt_pin_write(Led.LED_G, PIN_HIGH);
  30.     rt_pin_write(Led.LED_R, PIN_HIGH);
  31. }

  32. void RGBLeds_Green(rt_bool_t status){
  33.     if (status) {
  34.         rt_pin_write(Led.LED_G, PIN_LOW);
  35.     }else {
  36.         rt_pin_write(Led.LED_G, PIN_HIGH);
  37.     }
  38.     rt_pin_write(Led.LED_R, PIN_HIGH);
  39.     rt_pin_write(Led.LED_B, PIN_HIGH);
  40. }

  41. void RunningWaterLamp(void){
  42.     RGBLeds_Red(ON);
  43.     mdelay(500);
  44.     RGBLeds_Red(OFF);
  45.     RGBLeds_Blue(ON);
  46.     mdelay(500);
  47.     RGBLeds_Blue(OFF);
  48.     RGBLeds_Green(ON);
  49.     mdelay(500);
  50.     RGBLeds_Green(OFF);
  51.     RGBLeds_Red(ON);
  52.     RGBLeds_Blue(ON);
  53.     mdelay(500);
  54.     RGBLeds_Red(OFF);
  55.     RGBLeds_Blue(OFF);
  56.     RGBLeds_Red(ON);
  57.     RGBLeds_Blue(ON);
  58.     RGBLeds_Green(ON);
  59.     mdelay(500);
  60.     RGBLeds_Red(OFF);
  61.     RGBLeds_Blue(OFF);
  62.     RGBLeds_Green(OFF);
  63.     mdelay(500);
  64. }
  1. 主函数:
  2. #include "led/led.h"

  3. int main(void)
  4. {
  5.     RGBLeds_Init();
  6.     while (1)
  7.     {
  8.         RunningWaterLamp();
  9.     }
  10. }

四、下载RT-Thread固件


J5 为连接待烧录芯片
J1 两引脚为烧录端供电


五、实验现象





更多回帖

发帖
×
20
完善资料,
赚取积分