[开发板与模块] 【HT32F52352 Starter Kit测评】RGB呼吸灯

[复制链接]
621|10
手机看帖
扫描二维码
随时随地手机跟帖
mxkw0514|  楼主 | 2022-5-6 18:01 | 显示全部楼层 |阅读模式
本帖最后由 werasd 于 2022-5-25 15:14 编辑

   由于疫情原因,京东不能正常下单,于是21ic管家给我走了顺丰,对此非常感谢。
   之前21ic官网的极海、雅特力、华大、兆易等开发板测评活动大多是M3核或者M4核的32位单片机,微芯、芯圣等开发板测评活动大多是8位单片机,这就给人一种感觉,目前市面上主推M3/M4核的32位单片机和8位单片机,这次合泰入住21ic也有开发板测评活动,本次的HT32F52352 Starter Kit板卡是M0核的32位单片机,看了21ic上合泰版面的资料,也知道了M0的优势和应用场景,长见识了。本次有幸对HT32F52352 Starter Kit板卡进行测评(上面的仿真器可以掰下来用),那就跟着小海豚编写一个RGB呼吸灯的小项目吧。


HT32F52352

HT32F52352

小海豚

小海豚

图1


    RGB灯呢通过R、G、B分别施加不同的电压值可以实现多种亮度的呈现,这里分享一个PANTONE 国际色卡CMYK 对应 RGB 对照表,见附件1。在RGB灯上实现一个多彩的呼吸灯应该是一件很有趣的事情吧。呼吸灯主要通过不同电压的不同停顿时间来实现,这里使用PWM波来实现不同电压值的设置,通过简单的延时函数来实现,这里使用线性调光的方法,效果可能比不上复杂的非线性调光。本次使用的是620、520、460波段的全雾状共阳RGB灯。

PWM调电压值

PWM调电压值

RGB灯

RGB灯

图2

  通过PWM_Init()函数初始化3路PWM输出的IO口引脚,利用PWM_SetFreq()设置PWM波的频率,使用PWM_UpdateDuty()设置PWM波输出通道和PWM波的占空比。在进行RGB呼吸灯调光的时候,保证其中两路通道不变,改变其中一路PWM波的占空比,在使用延时函数时,还是以10ms以上不仅效果较为明显,其中主函数的程序如下所示,源码如附件二所示。结果演示视频如图3所示。

   不过,在本次使用中,编译程序时出现Error: L6200E: multiply defined报错,我用的可是官网提供的PWM.h和PWM.c文件的,不知道是我在那个环节使用出错了,最后不得不把PWM.c中的程序搬到main.c文件中才解决这个问题。有好心人还请不吝赐教。
int main(void)
{
  PWM_Init();
  Delayus(5000);

  PWM_SetFreq(PWM_FREQ_12K);
  PWM_UpdateDuty(PWM_CH0, PWM_FREQ_12K * 0.25);
  PWM_UpdateDuty(PWM_CH1, PWM_FREQ_12K * 0.50);
        PWM_UpdateDuty(PWM_CH2, PWM_FREQ_12K * 0.75);
  PWM_Cmd(ENABLE);
        Delayus(5000);

  while (1)
        {
          float g_ctr = 1;
                if(g_ctr ==1)
                {
                        while(g_ctr<299)
                        {
                                PWM_UpdateDuty(PWM_CH0, PWM_FREQ_12K * (g_ctr/300));
                                PWM_Cmd(ENABLE);
                                Delayms(g_ctr);
                                g_ctr++;
                        }
                }
                if(g_ctr == 299)
                {
                        while(g_ctr>1)
                        {
                                PWM_UpdateDuty(PWM_CH0, PWM_FREQ_12K * (g_ctr/300));
                                PWM_Cmd(ENABLE);
                                Delayms(g_ctr);
                                g_ctr--;
                        }
                }
        }
}

视频演示

视频演示

图3


    之前有销售统计相关项目信息,例如项目用的什么芯片型号之类的,国内很多厂家都推出了一众对标STM32系列型号的国产32位单片机,HT、AT、GD等等,将26个英文字母排列组合用完或许是一种趋势吧。本次用到的HT32F52352单片机是M0内核,面向于USB应用,其内存为128KB,算是在这个系列排第二的了,用它来跑轻量化系统确实很有新意。



PANTONE国际色卡CMYK对应_RGB对照表.pdf

94.76 KB

附件一

RGB.rar

7.72 MB

附件二

使用特权

评论回复
weifeng90| | 2022-5-6 22:10 | 显示全部楼层
疫情让很多电子工程师又把那些吃灰的板子拿出来把玩啦

使用特权

评论回复
gouguoccc| | 2022-5-7 07:48 | 显示全部楼层
这个一个灯需要三个IO控,还是用RGB5050灯珠方便。

使用特权

评论回复
weitingliu| | 2022-5-7 18:27 | 显示全部楼层
本帖最后由 weitingliu 于 2022-5-7 18:35 编辑

楼主您好,

关于您提到:
"不过,在本次使用中,编译程序时出现Error: L6200E: multiply defined报错,我用的可是官网提供的PWM.hPWM.c文件的,不知道是我在那个环节使用出错了,最后不得不把PWM.c中的程序搬到main.c文件中才解决这个问题。有好心人还请不吝赐教。"

这是因为 example\TM\PWM 范例内使用了下面的方式来将 pwm.c 增加到 Keil 编译清单内,当您手动将 pwm.c 加到 Keil 编译清单 (hardware\pwm.c) 内就造成了 multiply defined 的情况。下面的用法是为了简化 Porject file 的维护,但您的使用经验给了我们一些体悟,下一版HT32 Firmware Library Release 我们会避免这样的使用方式减少用户误用的机会。感谢您宝贵的反馈!

example\TM\PWM\main.c 引用了
#include "_ht32_project_source.h"

_ht32_project_source.h 内有
#include "pwm.c"


Image 3.png


Image 4.png

使用特权

评论回复

评论

mxkw0514 2022-5-7 22:30 回复TA
谢谢你 
chenjun89| | 2022-5-8 11:49 | 显示全部楼层
合泰这个**不错,有没有同感的。

使用特权

评论回复

评论

mxkw0514 2022-5-8 23:43 回复TA
你是说小海豚吗?小海豚图标确实挺不错的 
麻花油条| | 2022-5-12 11:23 | 显示全部楼层
要不是看到这个贴,我都忘了我也申请到了和泰的开发板了

使用特权

评论回复
saservice| | 2022-5-28 12:57 | 显示全部楼层
这个使用pwm了吗  

使用特权

评论回复
xiaoyaozt| | 2022-5-28 14:16 | 显示全部楼层
HT32F52352有机会试用。   

使用特权

评论回复
houjiakai| | 2022-5-28 14:41 | 显示全部楼层
RGB呼吸灯好久么有见过了。  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则