欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STM32F407 PWM輸出時,一次中斷未執(zhí)行完,下一次中斷就進(jìn)入,導(dǎo)致波形輸出錯亂
[打印本頁]
作者:
Aicuicui
時間:
2019-8-14 21:10
標(biāo)題:
STM32F407 PWM輸出時,一次中斷未執(zhí)行完,下一次中斷就進(jìn)入,導(dǎo)致波形輸出錯亂
設(shè)計使用的是STM32F407PWM輸出功能,已有內(nèi)含117個元素的數(shù)組前4個元素分別為1,2,1,3,后113個元素為0和1。
預(yù)期效果:根據(jù)117個數(shù)組元素,生成頻率為1MHz、50%占空比、輸出極性可調(diào)的117個連續(xù)方波(其中,根據(jù)前四個元素生成的方波頻率不是1us)。依次讀取數(shù)組元素,若數(shù)組中元素為1,則先是500ns低電平后是500ns高電平輸出;若數(shù)組中元素為0,則先是500ns高電平后是500ns低電平輸出,從而連續(xù)輸出117個方波。
現(xiàn)在我遇到的問題是中斷處理函數(shù)運行過慢,一次中斷未執(zhí)行完,下一次中斷就進(jìn)入,導(dǎo)致PWM波形輸出紊亂。我用示波器測試,如果方波頻率為1KHz,波形不錯亂,大于10KHz,錯亂現(xiàn)象逐漸嚴(yán)重。
現(xiàn)在我的中斷處理函數(shù)運行時間大概在1us左右,因此對于1MHz的PWM輸出是有問題的。所以向各位STM32的前輩請教一下,這種情況該怎樣解決呀。請大家?guī)兔匆幌隆Hf分感謝
這是我現(xiàn)在的中斷處理函數(shù):
//TIM12中斷服務(wù)函數(shù)
int j=0;
void TIM8_BRK_TIM12_IRQHandler(void)
{
int t;
extern int8_t ADSB[117];
if(TIM_GetITStatus(TIM12,TIM_IT_Update)==SET) //溢出中斷
{
if(j==117)
{
TIM_Cmd(TIM12, DISABLE);
TIM_ForcedOC1Config(TIM12, TIM_ForcedAction_Active);
j=0;
DS4=!DS4;
delay_ms(200);
TIM12_PWM_Init(84-1,1-1);// PWM~1MHz
TIM_SetCompare1(TIM12,42);
}
else
{
t=ADSB[j];
if(t==0)
{
TIM12->CCER|=(uint16_t)0x0002; //TIM_OCPolarity_Low
TIM12->ARR =84;
}
else if(t==1)
{
TIM12->CCER &=~(uint16_t)0x0002; //TIM_OCPolarity_High
TIM12->ARR =84;
}
else if(t==2)
{
TIM12->CCER &=~(uint16_t)0x0002; //TIM_OCPolarity_High
TIM12->ARR =210;
}
else if(t==3)
{
TIM12->CCER &=~(uint16_t)0x0002; //TIM_OCPolarity_High
TIM12->ARR =294;
}
}
j++;
}
TIM_ClearITPendingBit(TIM12,TIM_IT_Update); //清除中斷標(biāo)志位
}
作者:
xujing
時間:
2019-8-15 13:30
我給你個參考:我以前做過一個紅外遙控器,也是用到了stm32的定時器pwm輸出功能,我是這樣實現(xiàn)的。用一個定時器輸出pwm,設(shè)定好了頻率和占空比,然后用另一個定時器進(jìn)行中斷, 在中斷中開關(guān)pwm,并且動態(tài)的改變這個定時器的初始值,這樣就可以輸出不同時長的pwm波。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1