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的寄存器版跑马灯程序(存储器宏定义)相关推荐
- Proteus仿真STM32F103R6的寄存器版跑马灯程序
STM32最简单的外设莫过于IO口的高低电平控制了, Proteus仿真STM32F103R6的跑马灯程序. 一.原理图 二.跑马灯C程序 // 粗略延时函数 static void delay(un ...
- Proteus仿真STM32F103R6微控制器的GPIO(按键控制LED开关)
Proteus仿真STM32F103R6微控制器的GPIO,检查按键,控制LED灯的反转.. 输入:按键检测:输出:高低电平,控制LED. 一.原理图: 二.源码: #include "st ...
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...
- 第十九节:依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序。
开场白: 上一节讲了把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式.这节在上一节的驱动程序基础上,开始讲跑马灯程序.我的跑马灯程序看似简单而且重复,其实蕴含着鸿哥的大智慧.它是基于鸿哥的 ...
- ARM上裸奔的跑马灯程序
今天用优龙ST2410测试了一下在不进系统的情况下裸奔跑马灯程序.首先总结下在ARM板上裸奔程序的几种方法:既然要在ARM上裸奔,首先地让ARM板不进系统,方法是上电复位后选BIOS的最后一项:7 : ...
- 02 ARM11 时钟初始化后的跑马灯程序
2019独角兽企业重金招聘Python工程师标准>>> .text .globl _start _start:ldr r0, =0x70000000orr r0, r0, #0x13 ...
- arm 跑马灯 linux,02 ARM11 时钟初始化后的跑马灯程序
.text .globl _start _start: ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15, 0, r0, c15, c2, 4 ldr r0, ...
- 基于8255A接口芯片的跑马灯程序
目前这段时间,微机原理这门课上到了接口部分:开始接触到基于接口芯片的汇编编程,这个星期五上机实验完成后.考虑了一下老师说的跑马灯程序,感觉逻辑上实现不是很复杂 于是去实现了一下,但是没跑起来:于是最后 ...
- 写一个ST语言的跑马灯程序
ST语言的跑马灯程序如下: repeat for i:=1 to 8 do for j:=1 to 8 do if (i=j) then write('*'); else write(' '); en ...
最新文章
- python官网下载哪个版本-python下载哪个版本好
- 7.Array 数组对象
- 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri
- oracle 登录非系统用户,非Oracle用户使用操作系统验证登陆(/ as sysdba)
- AWD-LSTM为什么这么棒?
- geteditor p 取消自动_2020百度网盘超级会员怎么取消自动续费?
- 关闭VS警告#pragma warning(disable:4996)
- Dns-prefetch DNS 预解析优化页面加载速度
- mysql执行效率低_如何查询mysql中执行效率低的sql语句
- readmemh函数引用的txt格式_verilog的系统函数$readmemh的使用
- 常用排序算法及其实现
- [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
- 【福利】BAT架构师分享最全Java架构师学习技能图谱:包含Java编程+网络+设计模式+数据库+分布式等
- php自定义表单程序,自定义流程gooflow2.0+自定义表单
- 模型调参(一):weight decay(权重衰减)【“权重衰减”也叫“L1/L2正则化”】【权重衰减系数:正则项系数 λ】【对参数w有影响、对偏置b没影响】【偏置不加正则】
- 海量数据挖掘之中移动流量运营系统
- iOS文字颜色渐变透明
- 输出斐波拉契数列前30项,每行5个
- GSYVideoPlayer实现视频播放
- 【pycharm matlibplot中横轴与纵轴的刻度线向内如何调整】
热门文章
- poj 3040 Allowance
- jdk的安装和环境的配置
- 2015-07-22 JQuery 第二课(JQ元素获取,添加,删除,判断,遍历,取值,样式设置,改变对象,切换)...
- SQL语句获取数据库名、所有表名、所有字段名及字段类型
- STL中mem_fun与mem_fun_ref的区别[转]
- android - ADT本地配置、sdk配置
- [小故事大道理] -- GoodMorning,Sir!
- nginx+keepalived 高可用
- 解决mysqlAccess denied for user'root'@'IP地址'问题
- 取得COM对象的UUID并以string输出