本文引用地址:http://m.butianyuan.cn/article/201611/322883.htm//配置ADC時鐘=PCLK2/4
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
//使能PLL時鐘
RCC_PLLCmd(ENABLE);
//等待PLL時鐘就緒
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}
//配置系統(tǒng)時鐘=PLL時鐘
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//檢查PLL時鐘是否作為系統(tǒng)時鐘
while(RCC_GetSYSCLKSource()!=0x08)
{
}
}
}
voidNVIC_Configuration(void)//設(shè)置向量表基址
{
#ifdefVECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
}
voidDelay(u32nTime)//因為SysTick定時器是1ms中斷,所以此函數(shù)利用中斷延時nTimeMS
{
//開啟SysTick計數(shù)器
SysTick_CounterCmd(SysTick_Counter_Enable);//使能或失能SysTick計數(shù)器,輸入?yún)?shù)可以是:SysTick_Counter_Enable:使能計數(shù)器
//SysTick_Counter_Disable:失能計數(shù)器,SysTick_Counter_Clear:清除計數(shù)器值為0
TimingDelay=nTime;
while(TimingDelay!=0);//死等待等待系統(tǒng)定時器的1ms中斷直到計數(shù)值達(dá)到
//如果跳出了while循環(huán),在說明計時到,即產(chǎn)生了TimingDelay次的定時器中斷
//關(guān)閉系統(tǒng)滴答
SysTick_CounterCmd(SysTick_Counter_Disable);
//清除SysTick計數(shù)器
SysTick_CounterCmd(SysTick_Counter_Clear);
}
//中斷函數(shù)的書寫格式???我試了一下更改了函數(shù)名,中斷函數(shù)就不能運行了,不知道函數(shù)名是不是確定的
//不清楚是不是系統(tǒng)根據(jù)函數(shù)名而確定是中斷服務(wù)函數(shù)的查了一些資料,目前還沒找到明確的說明。
//其中TimingDelay這個全局變量在使用的時候需要在stm32f10x_it.c中進(jìn)行一下聲明,要不然不能使用,其聲明語句是:
//externvu32TimingDelay;
//但是在本程序中TimingDelay并沒有在stm32f10x_it.c中聲明,也可以使用
voidSysTick_Handler(void)
{
if(TimingDelay!=0x00)
{
TimingDelay--;
}
}
#ifdefDEBUG
//assert_failed編寫于文件main.c或其他用戶C文件中
voidassert_failed(u8*file,u32line)
{
while(1)
{
}
}
#endif
評論