找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1692|回復(fù): 4
收起左側(cè)

stm32滑動(dòng)變阻器控制舵機(jī)程序只能在debug下才能進(jìn)入PWM定時(shí)器中斷?

[復(fù)制鏈接]
ID:495852 發(fā)表于 2022-1-30 21:25 | 顯示全部樓層 |閱讀模式
滑動(dòng)變阻器控制舵機(jī)程序只能在debug下才能進(jìn)入PWM定時(shí)器中斷,正常運(yùn)行程序時(shí)不能進(jìn)入定時(shí)器中斷,大佬幫忙看看,源程序在附件中。

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
                /* led 端口配置 */
        LED_GPIO_Config();
        delay_config(72);
        adcConfig();
        /* 定時(shí)器初始化 */
        GENERAL_TIM_Init();

void ADC1_2_IRQHandler(void)
{
                if(ADC_GetITStatus(ADC1 ,ADC_IT_EOC) != RESET)
                {
                        Value = ADC_GetConversionValue (ADC1 );
               
                }
        ADC_ClearITPendingBit (ADC1 ,ADC_IT_EOC);

}      



void TIM2_IRQHandler(void)
{
        if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET )
        {
               
               
                        TIM_SetCompare3(TIM2,Value*2500/4095);//舵機(jī)最大的值是2500對(duì)應(yīng)2.5ms 2500/4095取出ADC每份的量*value
               
               
                TIM_ClearITPendingBit (TIM2,TIM_IT_Update );
        }      
}

NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn ;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE ;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_Init(&NVIC_InitStruct);
      
      
      
        NVIC_InitStruct.NVIC_IRQChannel = ADC1_2_IRQn ;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE ;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2 ;
        NVIC_Init(&NVIC_InitStruct);

stm32f103rbt6舵機(jī)4電位器舵機(jī)_TIM2.7z

184.83 KB, 下載次數(shù): 4

回復(fù)

使用道具 舉報(bào)

ID:743992 發(fā)表于 2022-1-31 11:27 | 顯示全部樓層
pwm不需要定時(shí)器中斷,adc其實(shí)也可以不走中斷。
同一個(gè)定時(shí)器,tim2設(shè)置成溢出中斷,然后又給他設(shè)置輸出比較,肯定會(huì)出問(wèn)題。
要用定時(shí)器中斷來(lái)掃描adc和控制舵機(jī)的話,用不同的定時(shí)器。
回復(fù)

使用道具 舉報(bào)

ID:495852 發(fā)表于 2022-2-1 14:03 | 顯示全部樓層
dasSpieler 發(fā)表于 2022-1-31 11:27
pwm不需要定時(shí)器中斷,adc其實(shí)也可以不走中斷。
同一個(gè)定時(shí)器,tim2設(shè)置成溢出中斷,然后又給他設(shè)置輸出比 ...

您好,這個(gè)程序把a(bǔ)dc轉(zhuǎn)換放到主函數(shù)while中,程序可以正常運(yùn)行。
但是有一點(diǎn)不太明白,adc轉(zhuǎn)換中斷是走的apb1的tim1,我是用tim2進(jìn)行舵機(jī)的角度調(diào)整,
兩個(gè)定時(shí)器不在一條總線上,會(huì)有干擾的情況嗎?
回復(fù)

使用道具 舉報(bào)

ID:474195 發(fā)表于 2022-2-6 00:43 | 顯示全部樓層
不同定時(shí)器之間只要中斷不沖突,無(wú)其他耦合就不影響
回復(fù)

使用道具 舉報(bào)

ID:743992 發(fā)表于 2022-2-12 10:44 | 顯示全部樓層
zhangleitj 發(fā)表于 2022-2-1 14:03
您好,這個(gè)程序把a(bǔ)dc轉(zhuǎn)換放到主函數(shù)while中,程序可以正常運(yùn)行。
但是有一點(diǎn)不太明白,adc轉(zhuǎn)換中斷是走 ...

你的程序里面在tim2中斷里面設(shè)置tim2的pwm輸出,這個(gè)肯定要沖突的
把tim2定時(shí)器中斷去掉,中斷服務(wù)函數(shù)里面的東西放到其他定時(shí)器里面即可
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表