久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

STM32 SysTick 系統(tǒng)時(shí)鐘 超簡易定時(shí)器SysTick

 Allen 圖書館 2011-09-17

STM32 SysTick 系統(tǒng)時(shí)鐘 超簡易定時(shí)器SysTick  

2010-05-30 19:45:15|  分類: stm32_ |  標(biāo)簽: |字號(hào) 訂閱

/**
* @brief Configures the SysTick. 系統(tǒng)時(shí)鐘配置函數(shù)   main.c
* @param None
* @retval None
*/

void SysTick_Configuration(void)
{
/* Setup SysTick Timer for 100 msec interrupts */
if (SysTick_Config((SystemCoreClock) / 10))     //     1/10s=100ms
{
   /* Capture error */
    while (1);
}

   NVIC_SetPriority(SysTick_IRQn, 0x0);
}

/**
* @brief This function handles SysTick Handler. 系統(tǒng)時(shí)鐘中斷函數(shù) stm32f10x_it.c
* @param None
* @retval None
*/

void SysTick_Handler(void)
{
/* Generate TIM1 COM event by software */
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
}

SysTick_Config(SystemFrequency / 10)   函數(shù)的形參就是systick重裝定時(shí)器的值,。
systck計(jì)數(shù)頻率為每秒72000000次,,所以72000次就是1/10秒,,也就是100ms,。

SysTick是1個(gè)24bit遞減計(jì)數(shù)器,通過對(duì)SysTick控制與狀態(tài)寄存器的設(shè)置,,可選擇HCLK時(shí)鐘(72M)或HCLK的8分頻(9M,,缺省是這個(gè))作為SysTick的時(shí)鐘源。
SysTick的重裝寄存器決定了定時(shí)器頻率,。

 

若SysTick的時(shí)鐘源是72M,   SystemFrequency = 72000000Hz
所以 SysTick_Config(SystemFrequency / 1000),; 就是1ms時(shí)基。

//     1/1000 s=1ms

關(guān)于SysTick校準(zhǔn)寄存器的介紹  (大多數(shù)情況下,,我們可以不必理會(huì)它)


    校準(zhǔn)值寄存器提供了這樣一個(gè)解決方案:它使系統(tǒng)即使在不同的CM3產(chǎn)品上運(yùn)行,,也能產(chǎn)生恒定的SysTick中斷頻率。最簡單的作法就是:直接把TENMS的值寫入重裝載寄存器,,這樣一來,,只要沒突破系統(tǒng)極限,就能做到每10ms來一次 SysTick異常。如果需要其它的SysTick異常周期,,則可以根據(jù)TENMS的值加以比例計(jì)算,。只不過,在少數(shù)情況下,,CM3芯片可能無法準(zhǔn)確地提供TENMS的值(如,,CM3的校準(zhǔn)輸入信號(hào)被拉低),所以為保險(xiǎn)起見,,最好在使用TENMS前檢查器件的參考手冊(cè),。
   SysTick定時(shí)器除了能服務(wù)于操作系統(tǒng)之外,還能用于其它目的:如作為一個(gè)鬧鈴,,用于測(cè)量時(shí)間等,。要注意的是,當(dāng)處理器在調(diào)試期間被喊停(halt)時(shí),,則SysTick定時(shí)器亦將暫停運(yùn)作,。

 

 

下面利用 SysTick 產(chǎn)生的 硬件延時(shí)函數(shù) 延時(shí) dly_ms 毫秒

/*******************************************************************************
* Function Name : SysTickHandler
* Description    :系統(tǒng)時(shí)鐘,一般調(diào)教到1MS中斷一次
*******************************************************************************/

void SysTick_Handler(void)
{
if(Timer1)
   Timer1--;
}

 

/********************************************
**函數(shù)名:SysTickDelay
**功能:使用系統(tǒng)時(shí)鐘的硬延遲
**注意事項(xiàng):一般地,不要在中斷中調(diào)用本函數(shù),否則會(huì)存在重入問題.另外如果屏蔽了全局中斷,則不要使用此函數(shù)
********************************************/

volatile u16 Timer1;
void SysTickDelay(u16 dly_ms)
{
Timer1=dly_ms;
while(Timer1);
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多