注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
小屋22的个人空间 http://home.eeworld.com.cn/space-uid-1322553.html [收藏] [复制] [分享] [RSS]
日志

新定义的按键评估套件-用滑块控制灯光亮度

已有 219 次阅读2023-8-3 11:07 |个人分类:测评

想实现一个用开发板上的滑块控制下边六个灯亮度的小实验。

首先想到的是用MCU上的定时器硬件资源,看了数据手册,板子上有PWM功能的总共有八组独立的PWM和六组复用的PWM,共14组。

关于外设资源的描述,数据手册上写的已经足够理解了,还配备有外设示例代码,大多数情况下可以先跑起来示例代码,再回头看数据手册,以下是官方提供的PWM初始化程序。

虽然周期和它注释描述的完全不一致,还有关闭PWM4 PWM3中断应该是IE1 &= ~0x20,不过还是能跑起来的。

下面是数据手册对于寄存器的描述,可以加深对这段外设驱动代码的理解。

关闭PWM对应的IO口输出,仅把PWM当作一个定时器来使用

PWMCFG = 0x00;

配置独立模式,时钟不分频,使能模块。

PWMCON0 = 0x80

需要允许PWM产生溢出中断

IE1 |= 0x02

对PWM0进行初始化然后设置周期和占空比进行测试,

PWM的时钟频率是固定的32MHz,因此如果像设置周期时间是1us,只需要用1us * 32MHz - 1 = 31

占空比如果想设置成50%,只要把PDT0x设置成周期的一半,

这里PWM0的初始化是31和50%

波形测试结果如下

不过看下来这么多组PWM外设的一大缺陷就是中断资源不够用,14组PWM信号只有一个中断溢出信号,只有计数值超过定时器的溢出值时才会产生中断,因为时钟频率是固定的32MHz并且所有PWM周期都只能设置成同一个值,这是不会冲突的。因此在pcb设计时就考虑到了要用PWM外设,把PWM输出引脚连接到了灯或者电机上。

另外一个实现思路是纯软件的方式,如果指令能运行的足够快的话,效果也是不错的,

以下是SysFunVarDefine.c中的更改,在Slider处理函数中添加软件定时器比较值的更改。

注释掉原先触摸按键TK的灯光显示。

链接:javascript:;
提取码:9f2q
--来自百度网盘超级会员V5的分享

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章