[资料分享与下载] 【YL-KL26Z开发】+ PWM控制LED亮度

[复制链接]
 楼主| 大苏牙 发表于 2015-10-11 08:06 | 显示全部楼层 |阅读模式
实验程序很简单,就如同上面大神说的一样,用AD采样电位器的电压值,来作为PWM的脉冲宽度值(占空比值)。
光盘里的程序是现成的PWM控制LED亮度,只不过少了给AD采样,将之前的程序加进去,稍作修改就可以了:
  1. void tpmInit(void)
  2. {
  3.     SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTD_MASK;            /* 打开GPIO时钟                */
  4.     SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK | SIM_SCGC6_TPM2_MASK;              /* 打开TPM时钟                 */
  5.     SIM_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK | SIM_SOPT2_TPMSRC(1);         /* 打开时钟门                  */

  6.     PORTB_PCR18 = ( 0 | PORT_PCR_MUX(3));                                /* TPM2_CH0 enable on PTB18    */
  7.     PORTB_PCR19 = ( 0 | PORT_PCR_MUX(3));                                /* TPM2_CH1 enable on PTB19    */
  8.     PORTD_PCR1  = ( 0 | PORT_PCR_MUX(4));                                /* TPM0_CH1 enable on PTD1     */

  9.     TPM0_MOD  = TPM_MODULE;                                              /* 1999 / 50MHz = 40uS PWM     */
  10.     TPM0_C1SC = TPM_Cn_MODE;                                             /* No Interrupts; High True
  11.                                                                              pulses on Edge Aligned PWM */
  12.     TPM0_C1V  = TPM_INIT_VAL;                                            /* 90% pulse width             */
  13.     TPM2_MOD  = TPM_MODULE;                                              /* 1999 / 50MHz = 40uS PWM     */
  14.     TPM2_C0SC = TPM_Cn_MODE;                                             /* No Interrupts; Low True
  15.                                                                             pulses on Edge Aligned PWM  */
  16.     TPM2_C0V  = TPM_INIT_VAL;                                            /* 90% pulse width             */
  17.     TPM2_C1SC = TPM_Cn_MODE;                                             /* No Interrupts; Low True
  18.                                                                             pulses on Edge Aligned PWM  */
  19.     TPM2_C1V  = TPM_INIT_VAL;                                            /* 90% pulse width             */

  20.     TPM2_SC   = TPM_SC_CMOD(1) | TPM_SC_PS(0);                          /* Edge Aligned PWM running from
  21.                                                                            BUSCLK / 1                   */
  22.     TPM0_SC   = TPM_SC_CMOD(1) | TPM_SC_PS(0);                          /* Edge Aligned PWM running from
  23.                                                                            BUSCLK / 1                   */
  24. }

TMP初始化:
 楼主| 大苏牙 发表于 2015-10-11 08:06 | 显示全部楼层
主程序:
  1. #include "includes.h"

  2. #define SET_LED_D3(x)     TPM2_C1V = (x)
  3. #define SET_LED_D2(x)     TPM2_C0V = (x)
  4. #define SET_LED_D4(x)     TPM0_C1V = (x)

  5. int  main (void)
  6. {
  7.     INT16U ADC = 0;
  8.     gpioInit();                                                         /* 管脚初始化                   */
  9.     tpmInit();                                                          /* TPM 初始化                   */
  10.     adcInit();  
  11.         
  12.     while(1) {

  13.                         ADC = adcGetUint();
  14.                         SET_LED_D2(ADC);
  15.                         SET_LED_D3(ADC);
  16.                         SET_LED_D4(ADC);   
  17.                         
  18.     }
  19. }

 楼主| 大苏牙 发表于 2015-10-11 08:07 | 显示全部楼层
把工程源码贴到这里吧

PTM_PWM.zip

972.39 KB, 下载次数: 13

FSL_TICS_Jeremy 发表于 2015-10-12 08:54 | 显示全部楼层
谢谢楼主分享,还请帮忙及时结贴!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

278

帖子

4

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