在线时间50 小时
UID2083275
注册时间2014-4-2
NXP金币0
TA的每日心情 | 开心 2016-10-24 08:34 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
中级会员
 
- 积分
- 337
- 最后登录
- 2021-2-26
|
昨天参考官例写了KL46的TPM模块发现进不了溢出中断,大神帮忙看一看
- <p> void SIM_Init(void)
- {
- SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);
- SIM_SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK; //FLLCLOCK 为TPM时钟 48MHz
- SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTC_MASK;
- SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK | SIM_SCGC6_TPM1_MASK;
- }</p><p>//ATL3 PTA12 ->TPM1_CH0 PTA13 ->TPM1_CH1 //ATL4 PTC2 ->TPM0_CH1 PTC3 ->TPM0_CH2
- void PORT_Init(void)
- {
- PORTA_PCR12 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x3) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
- PORTA_PCR13 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x3) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
- GPIOA_PDDR &= ~(3<<12); //上拉输入
- PORTC_PCR2 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x4) | PORT_PCR_DSE_MASK;
- PORTC_PCR2 &= ~PORT_PCR_PE_MASK; //推挽输出
- PORTC_PCR3 |= PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x4) | PORT_PCR_DSE_MASK;
- PORTC_PCR3 &= ~PORT_PCR_PE_MASK;
- GPIOC_PDDR |= (3<<2);
- }</p><p>void TPM0_Init(void)
- {
- enable_irq(17);set_irq_priority(17,2);
- TPM0_CNT = 0;
- TPM0_MOD = 4800;
- TPM0_SC |= TPM_SC_TOF_MASK | TPM_SC_TOIE_MASK | TPM_SC_CMOD(1);
- TPM0_C1SC |= TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK;
- TPM0_C1V = 0;
- TPM0_C2SC |= TPM_CnSC_MSB_MASK | TPM_CnSC_ELSA_MASK;
- TPM0_C2V = 0;
- }</p><p>void TPM1_Init(void)
- {
- enable_irq(18);set_irq_priority(18,1);
- TPM1_CONF |= TPM_CONF_TRGSEL(8) | TPM_CONF_CSOO_MASK | TPM_CONF_CSOT_MASK;
- TPM1_CNT = 0;
- TPM1_MOD = 14400;
- TPM1_SC |= TPM_SC_TOF_MASK | TPM_SC_TOIE_MASK | TPM_SC_CMOD(1);
- TPM1_C0SC |= TPM_CnSC_ELSA_MASK | TPM_CnSC_CHIE_MASK | TPM_CnSC_CHF_MASK; //上升沿捕获(周期)
- TPM1_C0V = 0;
- TPM1_C1SC |= TPM_CnSC_ELSB_MASK | TPM_CnSC_CHIE_MASK | TPM_CnSC_CHF_MASK; //下降沿捕获(占空比)
- TPM1_C1V = 0;
- }</p><p>void TPM0_isrv(void)
- {
- TPM0_SC |= TPM_SC_TOF_MASK;
- TPM0_C1V = Input_Period;
- TPM0_C2V = Input_Duty;
- }</p><p>void TPM1_isrv(void)
- {
- TPM1_SC |= TPM_SC_TOF_MASK;
- Capture_Period = (uint16)TPM1_C0V;
- Capture_Duty = (uint16)TPM1_C1V;
- TPM1_C1SC |= TPM_CnSC_CHF_MASK;
-
- if(TPM_STATUS_CH0F_MASK)
- {
- TPM1_C0SC |= TPM_CnSC_CHF_MASK;
- Capture_Duty = Capture_Duty*100/Capture_Period;
- LCD_write_english_string(4,0,"So_p");
- LCD_Write_Num(4,30,48000000/Capture_Period);
- LCD_write_english_string(2,65,"Hz");
- LCD_write_english_string(3,0,"Si_D %");
- LCD_Write_Num(5,30,Capture_Duty/48);
- }
- }
- </p>
复制代码
|
|