智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1188|回复: 0
打印 上一主题 下一主题

关于KL46 TPM模块,程序进不了MOD溢出中断

[复制链接]

1

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
793
威望
411
贡献
216
兑换币
260
注册时间
2014-3-7
在线时间
83 小时
跳转到指定楼层
1#
发表于 2015-2-7 23:09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参考了KL25写了KL46的TPM模块,可是发现进不了MOD溢出中断的问题,检查了代码没发现问题,大神帮忙看看哈
关键代码如下:

  1. void SIM_Init(void)
  2. {
  3.     SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);
  4.     SIM_SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK;   //FLLCLOCK 为TPM时钟 48MHz
  5.     SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTC_MASK;
  6.     SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK | SIM_SCGC6_TPM1_MASK;
  7. }//ATL3 PTA12 ->TPM1_CH0 PTA13 ->TPM1_CH1  //ATL3 PTC2 ->TPM0_CH1  PTC3 ->TPM0_CH2
  8. void PORT_Init(void)
  9. {
  10.     PORTA_PCR12 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x3) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
  11.     PORTA_PCR13 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x3) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
  12.     GPIOA_PDDR &= ~(3<<12);           //上拉输入
  13.     PORTC_PCR2 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x3) | PORT_PCR_DSE_MASK;
  14.     PORTC_PCR2 &= ~PORT_PCR_PE_MASK;  //推挽输出
  15.     PORTC_PCR3 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x3) | PORT_PCR_DSE_MASK;
  16.     PORTC_PCR3 &= ~PORT_PCR_PE_MASK;
  17.     GPIOC_PDDR |= (3<<2);
  18. }void TPM0_Init(void)
  19. {
  20.     enable_irq(17);set_irq_priority(17,2);
  21.     TPM0_CNT = 0;
  22.     TPM0_MOD = 0x12C0;
  23.     TPM0_SC |= TPM_SC_TOF_MASK | TPM_SC_TOIE_MASK | TPM_SC_CMOD(1);
  24.     TPM0_C1SC |= TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK;  //先高后低
  25.     TPM0_C1V = 0;
  26.     TPM0_C2SC |= TPM_CnSC_MSB_MASK | TPM_CnSC_ELSA_MASK;  //先低后高
  27.     TPM0_C2V = 0;
  28. }void TPM1_Init(void)
  29. {
  30.     enable_irq(18);set_irq_priority(18,1);
  31.     TPM1_CONF |= TPM_CONF_TRGSEL(8) | TPM_CONF_CSOO_MASK | TPM_CONF_CSOT_MASK;
  32.     TPM1_CNT = 0;
  33.     TPM1_MOD = 14400;
  34.     TPM1_SC |= TPM_SC_TOF_MASK | TPM_SC_TOIE_MASK | TPM_SC_CMOD(1);
  35.     TPM1_C0SC |= TPM_CnSC_ELSA_MASK | TPM_CnSC_CHIE_MASK | TPM_CnSC_CHF_MASK; //上升沿捕获(周期)
  36.     TPM1_C0V = 0;
  37.     TPM1_C1SC |= TPM_CnSC_ELSB_MASK | TPM_CnSC_CHIE_MASK | TPM_CnSC_CHF_MASK; //下降沿捕获(占空比)
  38.     TPM1_C1V = 0;
  39. }void TPM0_isrv(void)
  40. {
  41.     TPM0_SC |= TPM_SC_TOF_MASK;
  42.     TPM0_C1V = Input_Period;
  43.     TPM0_C2V = Input_Duty;
  44. }void TPM1_isrv(void)
  45. {
  46.     TPM1_SC |= TPM_SC_TOF_MASK;
  47.     Capture_Period = (uint16)TPM1_C0V;
  48.     Capture_Duty = (uint16)TPM1_C1V;
  49.     TPM1_C1SC |= TPM_CnSC_CHF_MASK;
  50.    
  51.     if(TPM_STATUS_CH0F_MASK)
  52.     {
  53.        TPM1_C0SC |= TPM_CnSC_CHF_MASK;
  54.        Capture_Duty = Capture_Duty*100/Capture_Period;
  55.        LCD_write_english_string(4,0,"So_p");
  56.        LCD_Write_Num(4,30,48000000/Capture_Period);
  57.        LCD_write_english_string(2,65,"Hz");
  58.        LCD_write_english_string(3,0,"Si_D     %");
  59.        LCD_Write_Num(5,30,Capture_Duty/48);
  60.     }
  61. }
复制代码
isr.h文件也写了
断点设在TPM0_isrv()函数中,发现一直到不了断点

回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-4 16:36 , Processed in 0.039486 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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