代碼里更新END寄存值,按手冊理解會自動清零COUNT,此時PWM應(yīng)該根據(jù)POLAR輸出對應(yīng)的狀態(tài),實際測試沒有輸出保持了上一次的狀態(tài)繼續(xù)到下一個周期開始才會
測試代碼如下:
? void TMR1_IRQHandler( void )
? {
? ? GPIOA_SetBits(GPIO_Pin_4);
? ??
? ? R8_TMR1_INT_FLAG = 0xff;
? ??
? ? R32_TMR2_CNT_END = 640000;
? ? R8_TMR2_CTRL_MOD = RB_TMR_COUNT_EN | RB_TMR_OUT_EN;//start
? ??
? ? GPIOA_ResetBits(GPIO_Pin_4);
? }
??
? void TimInit(void)
? {
? ? PWR_UnitModCfg(DISABLE, UNIT_SYS_LSE);? ? ?// 注意此引腳是LSE晶振引腳,要保證關(guān)閉才能使用其他功能
? ? GPIOA_ResetBits(GPIO_Pin_11);? ? ? ? ? ? // 配置PWM口 PA11
? ? GPIOA_ModeCfg(GPIO_Pin_11, GPIO_ModeOut_PP_5mA);
? ??
? ? GPIOA_ResetBits(GPIO_Pin_4);?
? ? GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);
? ??
? ? R8_TMR2_CTRL_MOD = RB_TMR_ALL_CLEAR;
? ? R32_TMR2_CNT_END = 640000;
? ? R8_TMR2_CTRL_MOD = 0;//RB_TMR_OUT_POLAR;
? ? R32_TMR2_FIFO = 32000;//1ms
? ? //R8_TMR2_CTRL_MOD = RB_TMR_OUT_POLAR | RB_TMR_COUNT_EN | RB_TMR_OUT_EN;//start
? ??
? ? R8_TMR1_CTRL_MOD = RB_TMR_ALL_CLEAR;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 清除所有計數(shù)值 */
? ? R32_TMR1_CNT_END = 320000*5;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 設(shè)置定時時間 */
? ? R8_TMR1_CTRL_MOD = 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 設(shè)置定時器模式 */
? ? //R8_TMR1_INT_FLAG = R8_TMR1_INT_FLAG;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 清除標志 */
? ? R8_TMR1_INTER_EN = RB_TMR_IE_CYC_END;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 定時中斷 */
? ? R8_TMR1_CTRL_MOD = RB_TMR_COUNT_EN;
? ? NVIC_EnableIRQ(TMR1_IRQn);
? }