STM32点亮开发板第一盏灯

本人刚开始学习32,今天使用了寄存器点亮了开发板上的第一盏灯,记录下学习过程。

材料

stm32f103c8t6开发板
ST-link V2烧录器(STlink接线和keil的配置
杜邦线

1.新建工程

new project,我这里命名为first-led
在这里插入图片描述
根据stm32信号选芯片,我这里是stm32f103c8
在这里插入图片描述
点击ok后出现下面界面直接点击×
在这里插入图片描述

2.搭建工程环境

在文件中创建main.c文件夹,并双击Source Group1添加至工程
在这里插入图片描述
编译
在这里插入图片描述
出现上面错误是因为没有添加启动文件
启动文件下载
提取码: u9i7
下载好后放入至文件夹中,并双击Source Group1添加至工程中,stm32f10x.h是自己创建,并在main函数中添加#include “stm32f10x.h”如下图:
在这里插入图片描述
再次编译
在这里插入图片描述
还是有错
声明函数SystemInit();
在这里插入图片描述

编译成功。

3.编写代码

查看原理图

要点亮灯D2,将PC13输出低电平即可。
在这里插入图片描述

配置PC13输出低电平

详细步骤

	1.使能GPIOC的时钟
	2.配置GPIOC13为输出模式
	3.配置GPIOC13输出低电平

在这里插入图片描述

为什么要使能GPIOC的时钟呢?因为默认GPIOC时钟是关闭的,不使能就无法进行下面的操作。就比如时钟是人的心脏,心脏停止了,就没必要后续的操作了。

如何使能GPIOC的时钟

在这里插入图片描述

首先找到复位时钟的起始地址:0x40021000

在这里插入图片描述
找到APB2的偏移地址: 0x18 。为什么找APB2外设时钟而不是APB1呢?因为GPIOC是挂载在APB2高速总线上的。
基地址 + 偏移地址
即:0x40021000 + 0x18 = 0x40021018
这是APB2外设时钟的地址
在这里插入图片描述
端口C在第四位,配置第四位为1即可打开C时钟。
即:0x40021018 |= 0x01 << 4;
这里:
|= : 置位
&=~ : 清零

如何配置PC13 为输出模式呢

这里要在数据手册中找到端口配置高寄存器的地址了,端口有16个I/O,我们要配置的13属于高寄存器。(0-7为低,8-15为高)
同样要找到GPIOC_CRH寄存器的地址
在这里插入图片描述

在这里插入图片描述
起始地址 + 偏移地址: 0x40011000 + 0x04 = 0x40011004
这里选择推挽输出模式,速度为10HZ,即将第四位配置为0001,后左移20位即可将PC13配置成输出模式
即 : 0x40011004 |= 0x01<<20;

如何配置PC13 输出低电平呢

同样,得找到端口输出寄存器(GPIOC_ODR)的地址,也是起始地址 + 偏移地址 。
在这里插入图片描述

在这里插入图片描述

起始地址 + 偏移地址即为:0x40011000 + 0Ch = 0x4001100C
这是GPIOC_ODR寄存器的地址,要配置第13位为0即可输出低电平0x4001100C &= ~(0x01<<13)

4 烧录查看结果

完整代码

#include "stm32f10x.h"
void SystemInit()
{

}
int main(void)
{
	*(unsigned int *)0x40021018 |= 0x01 << 4;
	*(unsigned int *)0x40011004 |= 0x01 <<20;
	*(unsigned int *)0x4001100C &= ~(0x01<<13);
	//unsigned int *强转为地址,然后*去内容
}

在这里插入图片描述
D2成功点亮。
32的学习道路遥远艰巨,157集大型连续剧刷起!加油不放弃。每一个程序员都是在不断地修改错误中成长的。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值