查看: 4441|回复: 3

[分享] KL25 cortex-m0+ 成功输出pwm

[复制链接]

该用户从未签到

12

主题

136

帖子

0

中级会员

Rank: 3Rank: 3

积分
256
最后登录
2021-1-15
发表于 2012-12-27 23:16:48 | 显示全部楼层 |阅读模式
void pwm_init(void)
{
  SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);
  
  SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
  PORTA_PCR1 = PORT_PCR_MUX(3);



  SIM_SCGC6 |= SIM_SCGC6_TPM2_MASK;
                                                     
  TPM2_C0SC = TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK ;  

  TPM2_MOD = 2399;      
  TPM2_C0V = 1200;  

  TPM2_CNT = 0;
  TPM2_SC = TPM_SC_CMOD(0x01) | TPM_SC_PS(0x02);
}
添加这句  SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);

输出5khz的方波
主频是 48M
回复

使用道具 举报

该用户从未签到

11

主题

67

帖子

0

新手上路

Rank: 1

积分
107
最后登录
1970-1-1
发表于 2012-12-28 09:29:04 | 显示全部楼层

RE:KL25 cortex-m0+ 成功输出pwm

楼主帮忙看看我这个为什么没有输出呢?而且在线调试时 CNT 的寄存器值一直为0 。谢谢!
程序如下:
int  main()
{
SIM->SOPT2 |= SIM_SOPT2_TPMSRC(1);
                        SIM->SCGC5 |= SIM_SCGC5_PORTD_MASK;
                        PORTD-&gtCR[1] = PORT_PCR_MUX(3);

                        SIM->SCGC6 |= SIM_SCGC6_TPM0_MASK;
                        TPM0-> CONTROLS[1].CnSC = TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK ;
                        TPM0-> MOD = 2399;
                        TPM0->CONTROLS[1].CnV = 1200;
                        TPM0->CNT = 0;
                        TPM0->SC = TPM_SC_CMOD(0x01) | TPM_SC_PS(0x02);
               
               
        while (1) ;
        return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-12-28 09:42:38 | 显示全部楼层

RE:KL25 cortex-m0+ 成功输出pwm

我手里也没有K25的板子,只能帮助看代码。你按楼主那样用TPM2试试。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
2
最后登录
1970-1-1
发表于 2012-12-28 16:05:12 | 显示全部楼层

回复:KL25 cortex-m0+ 成功输出pwm

我用下面的代码也输出了PWM波形。你再检查一下吧。
void pwm_init(void)
{
        SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);
 
        SIM_SCGC5 |= SIM_SCGC5_PORTD_MASK;
        PORTD_PCR1 = PORT_PCR_MUX(4);
 
        SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;
 
        TPM0_C1SC = TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK;
 
        TPM0_MOD = 2399;
        TPM0_C1V = 1200;
 
        TPM0_CNT = 0;
        TPM0_SC = TPM_SC_CMOD(0x01) | TPM_SC_PS(0x02);
        while(1);
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 09:09 , Processed in 0.085193 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表