STM32F103单片机跑马灯程序/寄存器
生活随笔
收集整理的這篇文章主要介紹了
STM32F103单片机跑马灯程序/寄存器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
STM32F103單片機跑馬燈程序/寄存器
首先是主函數。主函數先是調用 Stm32_Clock_Init 函數,配置系統時鐘為 9 倍頻,也就是 8*9=72M(外部晶振是 8Mhz),然后調用 delay_init 函數,初始化延時函數。接著就是調用 LED_Init 來初始化 PE5 和 PB5 為輸出。最后在while循環里面實現 LED0 和 LED1 交替閃爍,間隔為 300ms。
int main(void) { Stm32_Clock_Init(9);//系統時鐘設置delay_init(72); //延時初始化LED_Init(); //初始化與LED連接的硬件接口while(1){LED0=0;LED1=1;delay_ms(300);LED0=1;LED1=0;delay_ms(300);} }系統時鐘函數。在配置 STM32 外設的時候,任何時候都要先使能該
外設的時鐘!
延時函數。
void delay_init(u8 SYSCLK) { #if SYSTEM_SUPPORT_OS //如果需要支持OS.u32 reload; #endifSysTick->CTRL&=~(1<<2); //SYSTICK使用外部時鐘源 fac_us=SYSCLK/8; //不論是否使用OS,fac_us都需要使用 #if SYSTEM_SUPPORT_OS //如果需要支持OS.reload=SYSCLK/8; //每秒鐘的計數次數 單位為K reload*=1000000/delay_ostickspersec; //根據delay_ostickspersec設定溢出時間//reload為24位寄存器,最大值:16777216,在72M下,約合1.86s左右 fac_ms=1000/delay_ostickspersec; //代表OS可以延時的最少單位 SysTick->CTRL|=1<<1; //開啟SYSTICK中斷SysTick->LOAD=reload; //每1/delay_ostickspersec秒中斷一次 SysTick->CTRL|=1<<0; //開啟SYSTICK #elsefac_ms=(u16)fac_us*1000; //非OS下,代表每個ms需要的systick時鐘數 #endif }LED燈初始化函數。該函數的功能就是用來實現配置 PB5
和 PE5 為推挽輸出。
總結
以上是生活随笔為你收集整理的STM32F103单片机跑马灯程序/寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 节流防抖
- 下一篇: git checkout 单个文件_In