CH579動態(tài)調(diào)整TIM2 END周期PWM丟失


代碼里更新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);

? }

PWM_LOST.png

微信已回復(fù),請注意查收。


這個BUG解決辦法如下:

R32_TMR2_CNT_END寄存器先設(shè)置為最小3;然后設(shè)置為正確的周期即可

? void TMR1_IRQHandler( void )

? {

? ? GPIOA_SetBits(GPIO_Pin_4);

??

? ? R8_TMR1_INT_FLAG = 0xff;

? ??

? ? R32_TMR2_CNT_END = 3;//set min value to fix pwm lost bug

? ? R32_TMR2_CNT_END = 640000;


? ? R8_TMR2_CTRL_MOD = RB_TMR_COUNT_EN | RB_TMR_OUT_EN;//start

??

? ? GPIOA_ResetBits(GPIO_Pin_4);

? }




只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频