一、编写代码。
如何点亮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灯已经成功被我们点亮了。。。。。。。。。。。。。