STM32F103的流水灯点亮版本1(寄存器地址操作)

本文详细介绍了STM32F103微控制器中如何通过寄存器操作控制GPIO,实现流水灯效果,包括时钟配置、GPIO端口配置和输出控制。内容涵盖了C语言和汇编语言的实例,突出了底层寄存器操作的重要性。

一、STM32简介 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,它受宠若娇,大受工程师和市场的青睐,无芯能出其右。

STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。

STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。

二.使用通过寄存器点灯原理介绍。 (ps : stm32f1中文文档我在网上找到在这里下载的:

1.配置时钟使能。 因为流水灯要操作的引脚都是在GPIO端口的,所以根据系统结构图,属于AHB总线,所以所要用的端口的复位和时间控制都受RCC控制。

再看寄存器组起始地址表,可以看到RCC的地址范围,且可以看到要控制的寄存器都是在APB2总。

从上面发现复位和时钟控制的起始地址为0x4002 1000,

再翻到这里发下偏移量为0x18,所以该寄存器的地址为0x4002 1018

上图表格表示的寄存器里各位的含义,比如第三位也就是2那个位置为1时,就是GPIOA的时钟开启了。这时我们就可以用代码表达出来了。

接下来就是配置端口配置寄存器了,

这个就比较关键了,可以发现上面的时钟使能寄存器开启时钟是针对一个区域的,并不能确定引脚,

而这个寄存器就是确定引脚的,端口配置寄存器有两个,分别为端口配置低寄存器(CRL)和端口配置高寄存器(CRH)。

每四位配置一个端口,如11 01,11就是选择开启功能,01就是选择模式和确定最大速度,但有一点不一样,低寄存器的偏移地址为0x00,高寄存器的偏移地址为0x04。

我们翻到这里

以PA7为示例,相应端口配置器GPIOA_CRL地址为GPIOA的基址+上偏移量

在开头第二张图的那个位置可以找到GPIOA的地址为0x40010800, 低寄存器偏移如上图所示为0

以PA7口为输出口为例,就是要改变的是红色方框里的内容,

根据它下方表格里的内容得知要将他设置为推挽输出,输出模式最大速度为2MHz就是将它赋为0010,转换进制就是2(ps:我个人理解,错了的话希望大佬指正)

所以即将地址0x40010800的最前头一位赋为2,代码如下

7.接下来就是配置端口输出寄存器(ORD),可以看到偏移量为0xc,所以该寄存器的地址等于端口的基址加上偏移量,在相应的位赋值可以控制输出电压,0为低电压,1为高电压,以pa7引脚为例子,想要输出高电压,就需要在第八位赋1。

这里就可以控制led亮或者灭了,实现流水灯只需增加灯的数量和增加一些延时就行了。

三.使用C语言实现。 1.创建一个新的项目。选择自己对应的板子,注意后面需要勾选上core 以及startup

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值