4.寄存器点亮LED

看了视频,也试着用操作寄存器的方法点亮下LED。

应用keil5编译软件。

1.首先创建新工程。 如何创建工程就不介绍了

2.添加启动文件

 启动文件是由官方给出的。关于103的就有很多种。

 大部分都是容量的不同.我们这里用的是startup_stm32f10x_hd.s,因为我们的芯片是STM32F103ZET6,这里是大容量的

这里可以查看ST公司官方给出的选项参考

 在其他的文章中我们会详细解释这个启动文件,这里就先不介绍了。启动文件就是汇编编写的文件,用于调入__main,进入C编程。

3.添加好了启动文件,之后加入我们的main.c(应为也是学习着编程,就实现功能就行,没太注重格式)

在main.c中开始用C语言编程。

int main(void)

{

  while(1);

}

4.点亮LED还是要会看原理图的。在开发板中,查看原理图

 我们可以看出,LED是共阳极的,也就是接了3.3V电源。要想点亮LED,我们只需要在管脚上输出低电平即可。

那如何让管脚输出低电平呢?

 根据STM32手册查看外设定义:

//端口配置低寄存器(GPIOx_CRL)(端口x配置位(y = 0…7)) (x=A..E)--GPIOB_CRL =0x00300000;
//23:22-CNFy[1:0]:00:模拟输入模式;
//21:20-MODEy[1:0]:11:输出模式,最大速度50MHz;
GPIOB_CRL =0x00300000;
//端口输出数据寄存器(GPIOx_ODR) (x=A..E)

GPIOB_ODR =0x00000000;

在点亮LED的操作中,其实GPIO也只用这2个寄存器就是可以了。一些其他复杂的操作,我们会在以后的文章中记录说明。

关于时钟话题:

任何操作都是需要开启时钟,我们这里只是打开了GPIO上的时钟,GPIO是挂接在APB2中,AHB系统总线。

 我们只开启就好,暂不考虑配置时钟,找到APB2的寄存器,开启GPIOB的时钟就可以了。

//RCC_APB2ENR = 0x00000008;这个只是打开了IOPB的开关.
//使能了GPIOB的时钟
RCC_APB2ENR = 0x00000008;

//这里的时钟使用的是内部时钟HSI,

这样我们就可以下载至开发板中,去点亮LED了。

注意,在Debug中选好配置。

原文地址:https://www.cnblogs.com/qq376142178/p/12629603.html