STM32之SysTick例程
生活随笔
收集整理的這篇文章主要介紹了
STM32之SysTick例程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include "stm32f10x.h"/* RCC時鐘配置 */
void RCC_config()
{ ErrorStatus HSEStartUpStatus;/* RCC寄存器設置為默認配置 */RCC_DeInit();/* 打開外部高速時鐘 */RCC_HSEConfig(RCC_HSE_ON);/* 等待外部高速時鐘穩(wěn)定 */HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS) { /* 設置HCLK = SYSCLK */RCC_HCLKConfig(RCC_SYSCLK_Div1);/* 設置PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1);/* 設置PCLK1 = HCLK / 2 */RCC_PCLK1Config(RCC_HCLK_Div2);/* 設置FLASH代碼延時 */FLASH_SetLatency(FLASH_Latency_2);/* 使能預取址緩存 */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* 設置PLL時鐘源為HSE倍頻9 72MHz */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* 使能PLL */RCC_PLLCmd(ENABLE);/* 等待PLL穩(wěn)定 */while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);/* 設置PLL為系統(tǒng)時鐘源 */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/* 等待系統(tǒng)時鐘源切換到PLL */while(RCC_GetSYSCLKSource() != 0x08);}
}/* 系統(tǒng)節(jié)拍器配置 */
uint32_t SysTick_config(uint32_t ticks)
{/* 不能超過24位 */if((ticks - 1) > SysTick_LOAD_RELOAD_Msk)return 1;/* 重載值 */SysTick->LOAD = (uint32_t)(ticks - 1);/* 中斷優(yōu)先級最低 */NVIC_SetPriority(SysTick_IRQn, (1 << __NVIC_PRIO_BITS) - 1);/* 當前值清零 */SysTick->VAL = 0;/* 選擇內(nèi)核時鐘、倒數(shù)到0產(chǎn)生異常、使能系統(tǒng)節(jié)拍器 */SysTick->CTRL = (1 << 2) | (1 << 1) | (1 << 0);return 0;
}int main(void)
{/* 時鐘配置 */RCC_config();/* 系統(tǒng)節(jié)拍器配置 */SysTick_config(72 * 1000);while(1){}
}void SysTick_Handler(void)
{}
?
總結(jié)
以上是生活随笔為你收集整理的STM32之SysTick例程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32之RTT调试
- 下一篇: 马云:未来30年大数据时代,如何避免成为