【先楫HPM6750EVK2】二:使用HPM SDK驱动RGB LED
[复制链接]
本帖最后由 数码小叶 于 2023-1-8 21:08 编辑
上一篇已经安装好了Segger Embedded Studio for RISC-V,并且已经下好了HPM SDK,解压HPM SDK
README.md里介绍的“HPM SDK Windows 开发环境配置工具”貌似用不上,因为HPM6750EVK2板子上没有HPM6750EVK的FT2232HL芯片。但是还是可以用来生成工程。
hpm_sdk是HPM SDK 核心软件包,包含了驱动、板级支持文件、中间件、soc 定义文件、实例、处理脚本、帮助文件等
既然有例程,那借助于例程,肯定是熟悉HPM SDK最快捷的方式了。本来计划在demo里找个GPIO例程的,但是看到了rgb_led,于是乎就使用了这个例程。
在HPM SDK的帮助文档里,介绍了HPM SDK的命令行生成工程模式
generate_project -h
generate_project -list
generate_project -b hpm6750evk2
但是在HPM SDK解压文件里,发现了带GUI的工具start_gui.exe,使用起来似乎又变简单了
直接使用GUI工具
相比于帮助文档里的命令行,这个使用起来更加直接了,生成基于hpm6750cvk2的rgb_led工程
生成的rgb_led工程,可以选择直接使用Segger Embedded Studio打开
虽然第一次使用Segger Embedded Studio,但实际用起来,感觉和大部分基于 eclipse 的开发工具很相似,很容易上手。
直接编译刚才生成的工程,没有任何问题
相比于其他IDE,Segger Embedded Studio最突出的一个地方,就是对于代码的占用,提示很明显,不论是代码导航窗口,还是编译界面,都可以看到代码分布情况。
board_init();
board_init_rgb_pwm_pins();
printf("rgb led example\n");
在main函数里,两个初始化函数后是printf函数,于是看了下初始化函数,果然,里面有串口的初始化
void board_init(void)-->
void board_init_console(void)-->
void board_init_console(void)-->
void init_uart_pins(UART_Type *ptr)
cfg.type = BOARD_CONSOLE_TYPE;
cfg.base = (uint32_t) BOARD_CONSOLE_BASE;
cfg.src_freq_in_hz = clock_get_frequency(BOARD_CONSOLE_CLK_NAME);
cfg.baudrate = BOARD_CONSOLE_BAUDRATE;
init_uart_pins((UART_Type *) cfg.base);
初始化函数里初始化了uart 0,波特率115200,下载完程序后,可以用串口助手观察。
RGB led管脚,配置成了PWM功能
void init_led_pins_as_pwm(void)
{
/* Blue */
HPM_IOC->PAD[IOC_PAD_PB20].FUNC_CTL = IOC_PB20_FUNC_CTL_PWM0_P_7;
/* Green */
HPM_IOC->PAD[IOC_PAD_PB18].FUNC_CTL = IOC_PB18_FUNC_CTL_PWM1_P_1;
/* Red */
HPM_IOC->PAD[IOC_PAD_PB19].FUNC_CTL = IOC_PB19_FUNC_CTL_PWM1_P_0;
}
对于管脚的复用功能,在HPM SDK里每个功能都定义出来了,这一点很方便,可以直观的配置调用,
RGB三个管脚被设置为PWM功能,而PWM值在main函数的wile(1)中周期更改
if (increase_step && (duty + step > reload)) {
increase_step = false;
}
if (increase_step) {
duty += step;
} else {
duty -= step;
}
while (!do_update) {
;
}
pwm_update_raw_cmp_edge_aligned(pwm, pwm_cmp, duty);
本来想用Jlink调试的,结果一个接一个问题,花了几天时间,解决来解决去才发现版本太低,不支持基于RISC-V的HPM6750EVK2,最后只能选择串口 ISP下载了
烧写速度很快,瞬间就完成了,可能是因为程序比较小的原因
下载成功后,可以看到RGB的呼吸灯效果,打开串口助手,设置好波特率,确实有信息输出
https://training.eeworld.com.cn/video/35425
|