STM学习总结之点灯

学习目标:

  • 掌握 STM32 基础知识

STM32单片机学习总结之------点灯


学习内容:

点灯需要开GPIO外设时钟

1、配置系统时钟:在开启外设时钟之前,我们首先要配置好系统时钟SYSCLK, 为配置SYSCLK,要设置一系列的时钟来源、倍频、分频等控制参数。这些工作由SystemInit()库函数完成。这个函数的定义在system_stm32f10x.c文件之中。它的作用是设置系统时钟SYSCLK。函数的执行流程是先将与配置时钟相关的寄存器都复位为默认值,复位寄存器后,调用了另外一个函数SetSysClock(),定义如下:
在这里插入图片描述
从SetSysClock()代码可以知道,它是根据设置的条件编译宏来进行不同的时钟配置的。
在system_stm32f10x.c文件的开头,已经默认有如下的条件编译定义:
在这里插入图片描述
在第10行定义了SYSCLK_FREQ_72MHz条件编译的标识符,所以在SetSysClock()函数中将调用SetSysClockTo72()函数把芯片的系统时钟SYSCLK设置为72MHz,前提是输入的外部时钟源HSE的振荡频率要为8MHz。

2、外设时钟一般会在初始化外设的时候设置为开启(根据设计的产品功耗要求,也可以在使用的时候才打开) 。开启和关闭外设时钟也有封装好的库函数 RCC_APB2PeriphClockCmd()。
在这里插入图片描述
调用的时候需要向它输入两个参数,一个参数为将要控制的,挂载在
APB2总线上的外设时钟,第二个参数为选择要开启还是关闭该时钟。比如开GPIOC时钟,其设备挂载在APB2总线上。
在这里插入图片描述
如此便开启了外设时钟。开完时钟之后就要点灯了
注意:如果我们用到了I/O的引脚复用功能,还要开启其复用功能时钟。
如GPIOC的Pin4还可以作为ADC1的输入引脚,现在我们把它作为ADC1来使用**,除了开启GPIOC时钟外,还要开启ADC1的时钟**:
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE);
这里注意要开两个外设时钟。

3、选好引脚,配置了其功能开启了相应的时钟,我们可以终于可以正式控制I/O口的电平高低了,从而实现控制LED灯的亮与灭。
还是调用库函数,用GPIO_SetBits()控制输出高电平,用GPIO_ResetBits()控制输出低电平。
在这里插入图片描述
输入参数有两个,第一个为将要控制的GPIO端口:GPIOA„„GPIOG,第二个为要控制的引脚号:Pin0~Pin15。

4、看如下LED.h文件定义
在这里插入图片描述
其中的反斜杠符号**“ \”叫做续行符**,用来连接上下行代码,表示下面一行代码属于“\”所在的代码行,这在ST库经常出现。“\”的语法要求极其严格,在它的后面不能有空格、注释等一切“杂物”。

5、写好了led.c、led.h两个文件,这是控制LED灯的驱动程序。
接下来,利用写好的驱动文件,在main文件中编写应用程序代码了。
在这里插入图片描述
延时函数
在这里插入图片描述
后面还是声明了一个简单的延时函数,其定义在main文件的末尾。它是利用for循环实现的,用作短暂的,对精度要求不高的延时,延时的时间与输入的参数并无准确的计算公式,请不要深究。需要精准的延时的时候,我们会采用定时器来精确控制。


学习总结:

-----在芯片上电(复位)后,经过启动文件中SystemInit()函数配置好了时钟,就进入main函数了。接下来,从main函数开始分析代码的执行。
首先,调用了在led.c文件编写好的LED_GPIO_Config()函数,完成了对GPIOC的Pin口的初始化。紧接着就在while死循环里不断执行在led.h文件中编写的带参宏代码,并加上延时函数,使各盏LED轮流亮灭。当然,在LED控制的部分。
如果不习惯带参宏的方式,也可以直接使用GPIO_SetBits()和GPIO_ResetBits()函数实现对LED的控制。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jory&W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值