STM32F103实现点灯(寄存器方式)

参考:STM32F103系列最简易版点灯程序
作者:一只青木呀
发布时间:2020-10-21 11:40:38
网址:https://blog.csdn.net/weixin_45309916/article/details/109196950

目录

  • 硬件
  • 软件
  • 点灯流程
    • 使能GPIO端口E和B对应的时钟
      • 找到GPIO对应的时钟
      • 找到时钟对应的基地址(起始地址)
      • 打开GPIO端口B和端口E对应的时钟(偏移地址——>寄存器)
    • 找到LED灯对应的GPIO端口E和B寄存器的基地址
      • 打开底板原理图找到LED灯的引脚
      • 找到LED0和LED1对应的引脚
      • 打开数据手册找到其基地址
    • 设置其端口为输出模式
      • 配置PE5为输出模式
      • 配置PB5为输出模式
    • 设置其为低电平(LED灯亮低电平触发)
      • 设置PE5为低电平
      • 设置PB5为低电平
  • 烧写程序

硬件

STM32103最小系统开发板

注:江江视频使用的开发板是STM32103 C8T6

在这里插入图片描述

软件

keil软件

点灯流程

1、使能GPIO端口B和E对应的时钟
2、找到LED灯对应的GPIO端口E和B寄存器的基地址
3、设置其端口PE5、PB5为输出模式(端口配置寄存器)
4、设置其为低电平(输出数据寄存器)

使能GPIO端口E和B对应的时钟

找到GPIO对应的时钟

在STM32F1XX中文参考手册第二章存储器和总线构架
2.1 系统构架里找到
在这里插入图片描述
在这里插入图片描述
GPIOB、GPIOE对应的时钟为APB2,APB2和APB1都挂载在AHB系统总线上。

找到时钟对应的基地址(起始地址)

在这里插入图片描述

其基地址为:0x40021000

打开GPIO端口B和端口E对应的时钟(偏移地址——>寄存器)

找到了初始地址,下面就要找他的偏移地址,也就是找相对应的寄存器

在这里插入图片描述
由上图可知,这个寄存器有32位,我们将寄存器相应位数置为0或者1,可以打开其相应的功能。
在这里插入图片描述

代码实现:

复位和时钟控制器得基地址为:0x40021000
偏移值为:0x18
得到APB2外设寄存器地址为:0x40021018

使能IO端口B和IO端口E(即设置寄存器的第6位和第3位为1):

	*(unsigned int *)0x40021018 |= 0x01 << 6;//强转成指针再取内容*(unsigned int *)0x40021018 |= 0x01 << 3;

找到LED灯对应的GPIO端口E和B寄存器的基地址

打开底板原理图找到LED灯的引脚

在这里插入图片描述

找到LED0和LED1对应的引脚

LED1对应的引脚为GPIO端口E的PE5
在这里插入图片描述

LED0对应的引脚为GPIO端口B的PB5
在这里插入图片描述

打开数据手册找到其基地址

在这里插入图片描述
在这里插入图片描述
可看到GPIO端口E的基地址为:0x4001 1800
可看到GPIO端口B的基地址为:0X4001 0C00

设置其端口为输出模式

配置PE5为输出模式

注:0-7为低 8-15为高 PE5 这个5就为低
在这里插入图片描述

代码实现:
上面得到了PE5的基地址为:0x40011800
偏移地址为:0x00
得GPIOE_CRL寄存器地址为:0x40011800

*(unsigned int *)0x40011800 |= (0x0001) <<20;//或操作不会改变其他位

配置PB5为输出模式

在这里插入图片描述
代码实现:
上面得到了PB5的基地址为:0X40010C00
偏移地址为:0x00
得GPIOB_CRL寄存器地址为:0X40010C00

*(unsigned int *)0x40010C00 |= (0x01) <<20;

设置其为低电平(LED灯亮低电平触发)

设置PE5为低电平

在这里插入图片描述
配置GPIOE_ODR(输出数据寄存器out date register)寄存器得第5位为0.

代码实现:
上面得到了PB5的基地址为:0x40011800
偏移地址为:0x0C
得GPIOE_ODR寄存器地址为:0x4001180C

*(unsigned int *)0x4001180C &= ~(0x01 <<5);

设置PB5为低电平

在这里插入图片描述
代码实现:
上面得到了PB5的基地址为:0X40010C00
偏移地址为:0x0C
得GPIOE_CRL寄存器地址为:0X40010C0C

*(unsigned int *)0x40010C00 &= ~(0x01 <<5);

烧写程序

程序代码:
在这里插入图片描述
下载安装烧写软件FlyMcu,USB转TTL也要安装好,接线,找到串口的IO口对应好。需要拔插一下boot按钮(boot0置1,上一篇讲过串口下载方式的原理讲解)。

按下复位键开始烧写,如下图所示:

这个是江江使用的烧写软件进行烧写过程显示:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

boot0重新拔插置0,按压一下复位键

结果:两个灯都亮了!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rocketmq 消费方式_RocketMQ事务消费和顺序消费详解

一、RocketMq有3中消息类型1.普通消费2. 顺序消费3.事务消费顺序消费场景在网购的时候&#xff0c;我们需要下单&#xff0c;那么下单需要假如有三个顺序&#xff0c;第一、创建订单 &#xff0c;第二&#xff1a;订单付款&#xff0c;第三&#xff1a;订单完成。也就是这个三个…

GPIO输入输出模式原理(八种工作方式附电路图详解)

这几篇博文讲的不错&#xff0c;可参照着理解&#xff1a; STM32下拉输入模式与振动传感器的使用 “上拉电阻与下拉电阻”通俗解读 上、下拉电阻&#xff08;定义、强弱上拉、常见作用、吸电流、拉电流、灌电流&#xff09; 个人总结&#xff1a; 模拟量选浮空输入&#xff0c…

STM32F103构建固件库模板(PS固件库文件树介绍)

参考&#xff1a;STM32F103ZE新建固件库模板 作者&#xff1a;追兮兮 发布时间&#xff1a;2020-10-14 10:31:45 网址&#xff1a;https://blog.csdn.net/weixin_44234294/article/details/109065495 参考博文&#xff1a;https://blog.csdn.net/visual_eagle/article/details/…

STM32F103实现点灯(固件库方式)

参考&#xff1a;stm32上实现点灯 作者&#xff1a;SKY丶丿平才 发布时间&#xff1a; 2021-03-20 16:51:06 网址&#xff1a;https://blog.csdn.net/weixin_48264057/article/details/115028724 目录前言一、硬件设计二、软件设计1.建立工程2.代码编写三、实际验证1.烧写程序2…

STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)

参考&#xff1a;stm32的外部中断 震动感应 控制 继电器 作者&#xff1a;点灯小哥 发布时间&#xff1a; 2021-03-05 22:37:01 网址&#xff1a;https://blog.csdn.net/weixin_46016743/article/details/114417161 参考&#xff1a;STM32震动感应灯 作者&#xff1a;一只小阿大…

结构体与共用体(联合体)

参考&#xff1a;结构体与共用体 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-09 08:29:22 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/107889394 参考&#xff1a;联合体&#xff08;union&#xff09;的使用方法及其本质 作者&am…

STM32串口原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯、接收不定长数据

参考&#xff1a;串口的结构体 重定向printf串口发送stm32等博文 作者&#xff1a;点灯小哥 发布时间&#xff1a; 2021-03-06 21:46:33 网址&#xff1a;https://blog.csdn.net/weixin_46016743/article/details/114458698 目录串口相关知识定义通信概念1.通讯结构2.电平标准3…

STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值

参考&#xff1a;stm32定时器与定时器中断 作者&#xff1a;打酱油的 发布时间&#xff1a; 2021-04-11 01:04:09 网址&#xff1a;https://blog.csdn.net/weixin_46098612/article/details/115493737 参考&#xff1a;stm32通用定时器结构体函数定时器实现led闪烁 作者&#x…

关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。

关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。 楼主在公司接手了一段代码。编译的时候发现一个很奇怪的问题&#xff0c;就是获取最新代码的时候能编译通过&#xff0c;然后下次就编译不通过了&#xff0c;提示如下错误。 后来发现问题出在std…

STM32端口复用和端口重映射

参考&#xff1a;stm32 端口复用和重映射 作者&#xff1a;点灯小哥 发布时间&#xff1a; 2021-03-09 13:49:19 网址&#xff1a;https://blog.csdn.net/weixin_46016743/article/details/114581032 目录端口复用1.什么是端口复用2. 如何配置端口复用(以PA9、PA10串口为例)端口…

Scala学习:Curry化的函数

2019独角兽企业重金招聘Python工程师标准>>> 在第1章&#xff0c;我们说过Scala允许你创建新的“感觉像是原生语言支持”的控制抽象。尽管到目前你已经看到的例子都的确是控制抽象&#xff0c;不过任何人都不会 误以为它们是原生语言支持的。为了搞明白如何让控制抽…

js 获取session_Python实战案例:这是你见过的最详细的JS加密登录某博

0x00 抓包分析简单的搜索之后发现&#xff0c;很多参数都是登陆上面这个请求返回的值&#xff0c;这个请求在输入完账号光标到达密码框时就会生成!0x01 加密逻辑分析搜索su可以很快找到加密的位置&#xff0c;上图看到e.su和e.sp都是由sinaSSOEncoder这个函数生成的&#xff0c…

STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值

参考&#xff1a;stm32 定时器输出PWM原理及工作原理控制舵机 作者&#xff1a;点灯小哥 发布时间&#xff1a; 2021-03-09 23:17:52 网址&#xff1a;https://blog.csdn.net/weixin_46016743/article/details/114606662 参考&#xff1a;stm32之pwm输出 作者&#xff1a;打酱油…

STM32系统定时器SysTick(只能向下递减)延时闪烁灯

参考&#xff1a;stm32 系统定时器 SysTick 作者&#xff1a;点灯小哥 发布时间&#xff1a; 2021-03-10 13:46:00 网址&#xff1a;https://blog.csdn.net/weixin_46016743/article/details/114633245 参考&#xff1a;stm32之系统定时器 作者&#xff1a;打酱油的&#xff1b…

WMS学习笔记:1.尝试加载WMS

1.首先找一个可用的WMS栅格地图服务&#xff1a;http://demo.cubewerx.com/demo/cubeserv/cubeserv.cgi 获取GetCapabilities&#xff1a; http://demo.cubewerx.com/demo/cubeserv/cubeserv.cgi?serviceWMS&requestGetCapabilities 2.在ArcGIS中添加GIS空间服务 2.在ArcC…

mysqli 扩展_MySQLi的优势

1. 功能增加了2&#xff0c;效率大大增加(以后的PHP项目改成mysqli)3&#xff0c;更稳定mysqli使用面向对象技术&#xff0c;但也支持过程化的使用方式mysqli扩展中给我提供了三个类&#xff1a;1. mysqli和连接有关的类2. mysqli_result表达了对数据库的查询所返回的结果集。 …

STM32F4开发板硬件简介

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

演示:EIGRP非等价负载均衡(故障分析与解决篇)

演示&#xff1a;EIGRP非等价负载均衡的故障分析与排除故障背景&#xff1a;在如下图14.20所示的网络环境&#xff0c;工程师完成了环境中所有路由器的接口地址配置有EIGRP动态路由协议的启动&#xff0c;目前每台EIGRP路由器邻居关系正常&#xff0c;路由学习正常&#xff0c;…

STM32超声波模块测距串口输出/通用定时器中断并输出PWM控制舵机/系统定时器延时

参考&#xff1a;stm32 超声波模块 原理 实现测距 舵机使用 作者&#xff1a;点灯小哥 发布时间&#xff1a; 2021-03-10 19:37:16 网址&#xff1a;https://blog.csdn.net/weixin_46016743/article/details/114643703 目录效果展示超声波传感器原理超声波测距编程步骤代码编写…

STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置

摘自&#xff1a;STM32F103五分钟入门系列&#xff08;二&#xff09;GPIO的七大寄存器GPIOx_LCKR作用和配置 作者&#xff1a;自信且爱笑‘ 发布时间&#xff1a; 2021-05-01 12:08:32 网址&#xff1a;https://blog.csdn.net/Curnane0_0/article/details/116276876?spm1001.…