假设你手中已有 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED,并搭建了电路,分别GPIOA-5、GPIOB-9、GPIOC-14 这3个引脚上控制LED灯(最高时钟2Mhz),轮流闪烁,间隔时长1秒。
1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;
2)用C语言 寄存器方式编程实现。
一.STM32点灯介绍
stm32的点灯是,通过使能外设GPIO时钟,发出指令给外设GPIO,外设GPIO收到指令后,着手配置自己的寄存器,然后给IO口模式,让其实现各种功能,过程为:CPU给指令->GPIO收到指令->配置内部寄存器->配置IO口模式(注意是模式)->控制LED亮灭
二.GPIO设置
1.输入输出模式
输入模式
浮空输入模式:浮空输入状态下,IO 的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。可做KEY按键识别。
上下拉输入模式:内部设有上拉和下拉电阻,当外部电路为低电平,IO口设为下拉模式,当外部电路为低电平,IO口设为上拉模式。
模拟输入:用作内部ADC输入或DAC输出,预防干扰。
输出模式
推挽输出模式:(最常用)
开漏输出模式:(不常用)
推挽、开漏复用模式
2.最大速率设置
3.时钟配置
本次实验采用GPIOA、B、C三个端口。该三个端口都属于APB2总线
(1)找到时钟使能寄存器映射基地址
(2)找到端口偏移地址以及对应端口所在位置
4.GPIO初始化步骤
使能GPIOx口的时钟
指明GPIOx口的哪一位,这一位的速度大小以及模式
调用GPIOx初始化函数进行初始化
调用GPIO-SetBits函数,进行相应位的置位
三.C语言实现
1.创建项目
2.选择STM32F103C8开发板
3.source group里创建led.c,并写入代码,注意项目结构
代码如下:
/