Proteus仿真STM32F103R6的寄存器版跑马灯程序(存储器宏定义)
生活随笔
收集整理的這篇文章主要介紹了
Proteus仿真STM32F103R6的寄存器版跑马灯程序(存储器宏定义)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
跑馬燈程序,存儲器映像。用宏定義,增強程序的可讀性。。
頭文件:
#ifndef __STM32F10x_H #define __STM32F10x_H#define PERIPH_BASE (0X40000000) #define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE + 0X10000) #define AHBPERIPH_BASE (PERIPH_BASE + 0X20000)#define RCC_BASE (AHBPERIPH_BASE + 0X1000) #define GPIOB_BASE (APB2PERIPH_BASE + 0X0C00)#define RCC_APB2ENR *(unsigned int *)(RCC_BASE + 0X18) #define GPIOB_CRL *(unsigned int *)(GPIOB_BASE + 0X00) #define GPIOB_CRH *(unsigned int *)(GPIOB_BASE + 0X04) #define GPIOB_ODR *(unsigned int *)(GPIOB_BASE + 0X0C) #endif主函數:
#include "stm32f10x.h"// 粗略延時函數 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偏移地址:0X18RCC_APB2ENR |= (1 << 3);// 配置IO口為輸出模式// CNFy[1:0]: 00 - 通用推挽輸出模式// MODEy[1:0]:01 - 輸出模式,最大速度10MHzfor(unsigned int i=0; i<8; i++){// GPIOB起始地址:0X40010C00// GPIOx_CRL偏移地址:0X00GPIOB_CRL |= (1 << (4*i + 0));GPIOB_CRL &= ~(1 << (4*i + 1));GPIOB_CRL &= ~(1 << (4*i + 2));GPIOB_CRL &= ~(1 << (4*i + 3));}// 設置IO口為高電平,關閉LED燈// GPIOB起始地址:0X40010C00// GPIOx_ODR地址偏移:0X0CGPIOB_ODR |= 0xFF;while(1){for(unsigned int i=0; i<8; i++){// 設置IO口為低電平,打開LED燈// GPIOB起始地址:0X40010C00// GPIOx_ODR地址偏移:0X0CGPIOB_ODR &= ~(1 << i);delay(1);// 設置IO口為高電平,關閉LED燈// GPIOB起始地址:0X40010C00// GPIOx_ODR地址偏移:0X0CGPIOB_ODR |= (1 << i);delay(1);}} }?
總結
以上是生活随笔為你收集整理的Proteus仿真STM32F103R6的寄存器版跑马灯程序(存储器宏定义)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32:从菜鸟到牛人就是如此简单!为
- 下一篇: 清华大学研究称国内多城市饮用水含高浓度P