跑马灯程序,存储器映像。用宏定义,增强程序的可读性。。

头文件:

#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的寄存器版跑马灯程序(存储器宏定义)相关推荐

  1. Proteus仿真STM32F103R6的寄存器版跑马灯程序

    STM32最简单的外设莫过于IO口的高低电平控制了, Proteus仿真STM32F103R6的跑马灯程序. 一.原理图 二.跑马灯C程序 // 粗略延时函数 static void delay(un ...

  2. Proteus仿真STM32F103R6微控制器的GPIO(按键控制LED开关)

    Proteus仿真STM32F103R6微控制器的GPIO,检查按键,控制LED灯的反转.. 输入:按键检测:输出:高低电平,控制LED. 一.原理图: 二.源码: #include "st ...

  3. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  4. 第十九节:依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序。

    开场白: 上一节讲了把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式.这节在上一节的驱动程序基础上,开始讲跑马灯程序.我的跑马灯程序看似简单而且重复,其实蕴含着鸿哥的大智慧.它是基于鸿哥的 ...

  5. ARM上裸奔的跑马灯程序

    今天用优龙ST2410测试了一下在不进系统的情况下裸奔跑马灯程序.首先总结下在ARM板上裸奔程序的几种方法:既然要在ARM上裸奔,首先地让ARM板不进系统,方法是上电复位后选BIOS的最后一项:7 : ...

  6. 02 ARM11 时钟初始化后的跑马灯程序

    2019独角兽企业重金招聘Python工程师标准>>> .text .globl _start _start:ldr r0, =0x70000000orr r0, r0, #0x13 ...

  7. arm 跑马灯 linux,02 ARM11 时钟初始化后的跑马灯程序

    .text .globl _start _start: ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15, 0, r0, c15, c2, 4 ldr r0, ...

  8. 基于8255A接口芯片的跑马灯程序

    目前这段时间,微机原理这门课上到了接口部分:开始接触到基于接口芯片的汇编编程,这个星期五上机实验完成后.考虑了一下老师说的跑马灯程序,感觉逻辑上实现不是很复杂 于是去实现了一下,但是没跑起来:于是最后 ...

  9. 写一个ST语言的跑马灯程序

    ST语言的跑马灯程序如下: repeat for i:=1 to 8 do for j:=1 to 8 do if (i=j) then write('*'); else write(' '); en ...

最新文章

  1. python官网下载哪个版本-python下载哪个版本好
  2. 7.Array 数组对象
  3. 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri
  4. oracle 登录非系统用户,非Oracle用户使用操作系统验证登陆(/ as sysdba)
  5. AWD-LSTM为什么这么棒?
  6. geteditor p 取消自动_2020百度网盘超级会员怎么取消自动续费?
  7. 关闭VS警告#pragma warning(disable:4996)
  8. Dns-prefetch DNS 预解析优化页面加载速度
  9. mysql执行效率低_如何查询mysql中执行效率低的sql语句
  10. readmemh函数引用的txt格式_verilog的系统函数$readmemh的使用
  11. 常用排序算法及其实现
  12. [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
  13. 【福利】BAT架构师分享最全Java架构师学习技能图谱:包含Java编程+网络+设计模式+数据库+分布式等
  14. php自定义表单程序,自定义流程gooflow2.0+自定义表单
  15. 模型调参(一):weight decay(权重衰减)【“权重衰减”也叫“L1/L2正则化”】【权重衰减系数:正则项系数 λ】【对参数w有影响、对偏置b没影响】【偏置不加正则】
  16. 海量数据挖掘之中移动流量运营系统
  17. iOS文字颜色渐变透明
  18. 输出斐波拉契数列前30项,每行5个
  19. GSYVideoPlayer实现视频播放
  20. 【pycharm matlibplot中横轴与纵轴的刻度线向内如何调整】

热门文章

  1. poj 3040 Allowance
  2. jdk的安装和环境的配置
  3. 2015-07-22 JQuery 第二课(JQ元素获取,添加,删除,判断,遍历,取值,样式设置,改变对象,切换)...
  4. SQL语句获取数据库名、所有表名、所有字段名及字段类型
  5. STL中mem_fun与mem_fun_ref的区别[转]
  6. android - ADT本地配置、sdk配置
  7. [小故事大道理] -- GoodMorning,Sir!
  8. nginx+keepalived 高可用
  9. 解决mysqlAccess denied for user'root'@'IP地址'问题
  10. 取得COM对象的UUID并以string输出