Proteus仿真STM32F103R6的寄存器版跑马灯程序
生活随笔
收集整理的這篇文章主要介紹了
Proteus仿真STM32F103R6的寄存器版跑马灯程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
STM32最簡單的外設莫過于IO口的高低電平控制了, Proteus仿真STM32F103R6的跑馬燈程序。
一、原理圖
二、跑馬燈C程序
// 粗略延時函數 static void delay(unsigned int n) {for(unsigned int i=0; i<n; i++){for(unsigned int j=0; j<1024; j++){for(unsigned int k=0; k<1024; k++){__asm("nop");}}} } int main(void) {// 使能GPIOB端口時鐘// RCC起始地址:0X40021000// RCC_APB2ENR偏移地址:0X18*(unsigned int *)(0X40021000 + 0X18) |= (1 << 3);// 配置IO口為輸出模式// CNFy[1:0]: 00 - 通用推挽輸出模式// MODEy[1:0]:01 - 輸出模式,最大速度10MHzfor(unsigned int i=0; i<8; i++){// GPIOB起始地址:0X40010C00// GPIOx_CRL偏移地址:0X00*(unsigned int *)(0X40010C00 + 0X00) |= (1 << (4*i+0));*(unsigned int *)(0X40010C00 + 0X00) &= ~(1 << (4*i+1));*(unsigned int *)(0X40010C00 + 0X00) &= ~(1 << (4*i+2));*(unsigned int *)(0X40010C00 + 0X00) &= ~(1 << (4*i+3));}// 設置IO口為高電平,關閉LED燈// GPIOB起始地址:0X40010C00// GPIOx_ODR地址偏移:0X0C*(unsigned int *)(0X40010C00 + 0X0C) |= 0xFF;while(1){for(unsigned int i=0; i<8; i++){// 設置IO口為低電平,打開LED燈// GPIOB起始地址:0X40010C00// GPIOx_ODR地址偏移:0X0C*(unsigned int *)(0X40010C00 + 0X0C) &= ~(1 << i);delay(1);// 設置IO口為高電平,關閉LED燈// GPIOB起始地址:0X40010C00// GPIOx_ODR地址偏移:0X0C*(unsigned int *)(0X40010C00 + 0X0C) |= (1 << i);delay(1);}} }?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Proteus仿真STM32F103R6的寄存器版跑马灯程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国家发改委:春运期间推动“健康码”全国一
- 下一篇: STM32:从菜鸟到牛人就是如此简单!为