[活动专区] 基于赛元LB101X 触控评估板开发心得(二)按键控制PWM

[复制链接]
979|0
 楼主| lisingch 发表于 2019-5-18 17:39 | 显示全部楼层 |阅读模式
      第一次接触触控按键,本次实验基于赛元LB1011-隔空3MM触控评估板,利用三个触控按键控制P27(PWM5)PWM不同占空比的输出,实验比较简单,其目的主要是进一步熟悉LB101X系列评估学习板。

一、实验资源
1、LB1011隔空3MM评估学习板;
2、SC_LINK调试器;
3、赛元微电子提供的例程及相关文档资料;
4、逻辑分析仪;

二、实验过程
1、资源简介。LB1011隔空3MM评估学习板核心微控制器芯片为SC92F8462B,内建高频24MHz振荡器,作为系统时钟源时,fSYS 可通过编程器选择设定为 12/6/2MHz,且频率误差不超过 ±1% ;片上资源还包括6路共用周期、单独可调占空比的10位PWM,可同时输出三组互补带死区的 PWM波形 ,从原理图中可以看到扩展IO端口中包含了6路PWM输出中的三路,即PWM3(P25)、PWM4(P26)、PWM5(P27)。本次实验使用了其中的PWM5(P27)。
Image 007.png

2、软件实现。直接在例程的基础上进行简单的代码添加,主要就是增加了PWM5的初始化函数,并在void UpdateLcdBufFunc(void)更新显示数据函数中添加利用按键改变“PWMDTY5”寄存器数据,用于改变PWM5输出占空比。
Image 001.png
  1. void PWM_Init(void)
  2. {       
  3.         PWMCFG  = 0x60;                //设置PWM系统时钟为fOSC/2,PWM5输出反向
  4.         PWMCON  = 0x20;                //控制PWM5输出到P27
  5.         PWMDTYA = 0xC0;                //周期低2位,要先行写入       
  6.         PWMPRD  = 0xF9;                //周期高8位
  7.         PWMDTYB = 0X00;   //PWM5 周期与占空比的低2位,要先行写入  
  8.         PWMDTY5 = 0X00;   //PWM5 占空比高8位设置
  9.         PWMCON |= 0x80;                //使能PWM
  10. }
  1. void UpdateLcdBufFunc(void)
  2. {
  3.         if(exKeyValue != 0xff)
  4.         {
  5.                 if(gTkIsValid == 0)                        //松手前只出一次键
  6.                 {               
  7.                         gTkIsValid = 1;
  8.                         KeyValue=exKeyValue;
  9.                         switch(KeyValue)
  10.                         {               
  11.                                 //不同间距不同大小的按键
  12.                                 case 1:        {
  13.                                                                         LED1= ~LED1;
  14.                                                                         PWMDTY5=0X10;
  15.                                                                 }break;
  16.                                 case 2:        {
  17.                                                                         LED2= ~LED2;
  18.                                                                         PWMDTY5=0X20;
  19.                                                                 }break;
  20.                                 case 3:        {
  21.                                                                         LED3= ~LED3;
  22.                                                                         PWMDTY5=0X40;
  23.                                                                 }break;              
  24.                                 default:exKeyValue = 0xff;break;                        
  25.                         }
  26.                 }                                                        
  27.         }
  28.         else
  29.         {
  30.                 gTkIsValid = 0;        
  31.         }
  32. }


3、实验结果
Image 003.png

三、实验总结
      在上午对LB1011-隔空3MM测试的基础上又进行了一次简单实验,目的是增加认知,为后期的相关实验做个准备。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

15005

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部