stm32寄存器点灯

一、编写代码。

 如何点亮D2?

1、使能APB2上的GPIOC时钟

        由图可看出要打开GPIOC就先要使能APB2(使能:使能是芯片的一个输入引脚,或者电路的一个输入端口,只有该引脚激活,例如置于高电平时,整个模块才能正常工作。你可以想象成手枪或者灭火器的保险拴之类的东西。使能不仅仅是指控制,它是需要符合某种条件后所做出的一种需求反应。如TTL三态输出门电路中使能端也就是控制端.。使能端当为低电平有效时,当使能信号为低电平时,电路实现与非门功能; 当为高电平时,电路呈高阻态。使能信号为高电平有效时,当使能信号为高电平时,电路实现与非功能;当为低电平时,电路实现高阻态。)

        如何使能APB2?找寄存器(找出它的起始地址和偏移地址)

由系统结构图看出总线选的应该是AHB,而不是APB2

 

2、配置GPIOC13端口输出模式(端口配置寄存器)

        找出它的起始地址和偏移地址

由系统结构图看出总线选的应该是APB2(此时我们配置的是GPIOC),而不是AHB

 我们是GPIO13,因此配置的是高寄存器

3、配置GPIO13输出低电平(输出数据寄存器)

        找出它的起始地址和偏移地址

        

 

二、按照上面的步骤找到所需信息编写好代码


void SystemInit()//不让系统报错
{
	
}

int main()
{
	//1、使能GPIOC时钟  寄存器起始地址0x4002 1000 + 偏移地址0x18
	*(unsigned int *) 0x40021018 |= 0x01 << 4;   //*(unsigned int *)先把十六进制数转化为指针(即一个地址),然后再取这个地址里面的内容,置1然后左移4位
	
	//2、配置GPIOC13为输出模式 寄存器起始地址0x4001 1000 + 偏移地址0x04
	*(unsigned int *) 0x40011004 |= 0x01 << 20;    //*(unsigned int *)先把十六进制数转化为指针(即一个地址),然后再取这个地址里面的内容,置1然后左移20位
	
	
	//3、配置GPIOC13输出低电平  寄存器起始地址0x4001 1000 + 偏移地址0Ch
	*(unsigned int *) 0x4001100c &=~ (0x01 << 13);   //*(unsigned int *)先把十六进制数转化为指针(即一个地址),然后再取这个地址里面的内容,置0然后左移13位
	
}

编写好后保存:

(额外:从keil复制到这里的代码全是乱码如何解决?)

三、连接硬件

把boot1(左)置0,boot0(右)置1

 RXD连接A9,TXD连接A10,GND连接GND,(有一些需要连接,有一些不需要,我的是需要连接的,具体看个人,否则有可能烧录不成功,我就试了好久才发现这个问题..........),最后插上USB电源。

四、烧写代码

,1、打开FlyMcu

代表烧写成功了。。。。。

五、把boot1(左),boot0(右)都置0

由上图可以看到PC13灯已经成功被我们点亮了。。。。。。。。。。。。。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值