ch32v103的一個(gè)詭異的問題,誰能幫忙看一下

主程序循環(huán)中一直打印不出東西;調(diào)試時(shí)一直死在if(it1 == 1),確認(rèn)定時(shí)器工作了,it1 =1 了;但是就是進(jìn)不了if處理程序!


void TIM2_NVIC_Configuration(void)

{

? ? NVIC_InitTypeDef NVIC_InitStructure;


? ? NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

? ? NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;

? ? NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;

? ? NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

? ? NVIC_Init(&NVIC_InitStructure);

}


? ? //TIM_Period--1000? ?TIM_Prescaler--71 -->中斷周期為1ms//

void TIM2_Configuration(void)

{

? ? TIM_TimeBaseInitTypeDef? TIM_TimeBaseStructure;

? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);

//? ? TIM_DeInit(TIM2);

? ? TIM_TimeBaseStructure.TIM_Period=1000;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 自動(dòng)重裝載寄存器周期的值(計(jì)數(shù)值)//

? ? // 累計(jì) TIM_Period個(gè)頻率后產(chǎn)生一個(gè)更新或者中斷//

? ? TIM_TimeBaseStructure.TIM_Prescaler= (72 - 1);? ? ? ? ? ? ? ? ? // 時(shí)鐘預(yù)分頻數(shù) 72M/72 //

? ? TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;? ? ? ?// 采樣分頻 //

? ? TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; // 向上計(jì)數(shù)模式 //

? ? TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

? ? TIM_ClearFlag(TIM2, TIM_FLAG_Update);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 清除溢出中斷標(biāo)志 //

? ? TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

//? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , DISABLE);? ? ? ? //先關(guān)閉等待使用//

}


__attribute__((interrupt("WCH-Interrupt-fast")))

void TIM2_IRQHandler(void)

{

? ? if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ){

? ? ? ? TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);

? ? ? ? time++;//check_delaytime();

? ? ? ? if ( time == 10 ) { time = 0; // 100ms 時(shí)間到

? ? ? ? ? ? it1 = 1;

? ? ? ? }

? ? }

}


/*******************************************************************************

* Function Name? : main

* Description? ? : Main program.

* Input? ? ? ? ? : None

* Return? ? ? ? ?: None

*******************************************************************************/

int main(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

Delay_Init();

USART_Printf_Init(115200);

printf("SystemClk:%d\r\n",SystemCoreClock);

? ? TIM2_NVIC_Configuration();

? ? TIM2_Configuration();

? ? TIM_Cmd(TIM2, ENABLE);

//printf("This is printf example\r\n");

it1 = 0;

while(1)

{

? ? if(it1 == 1){

? ? ? printf("This is printf example\r\n");

? ? ? it1=0;

? ? }

}

}


你好,根據(jù)你的程序和問題,應(yīng)該是定義變量被編譯器優(yōu)化導(dǎo)致的,應(yīng)該在你變量定義的前面加一個(gè)volatile關(guān)鍵字即可,具體可見附件,用你程序?qū)懙膮⒖祭?/p>

icon_rar.gifTIM2.zip



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

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