程序员开发实例大全宝库

网站首页 > 编程文章 正文

STM32跑马灯——库函数(从0开始)

zazugpt 2025-05-21 17:54:08 编程文章 14 ℃ 0 评论

1:基础知识准备工作:

1:GPIO

每组IO有16个IO口,这16个IO口通过先七个寄存器来进行控制

GPIOx_CRL : 端口配置低寄存器

GPIOx_CRH: 端口配置高寄存器

GPIOx_IDR: 端口输入寄存器

GPIOx_ODR: 端口输出寄存器

GPIOx_BSRR: 端口位设置/清除寄存器

GPIOx_BRR : 端口位清除寄存器

GPIOx_LCKR: 端口配置锁存寄存器

2:四种输出模式

开漏输出模式 的理解(目前先只学习这一个,因为只是用来点亮LED,后面用到其他的在接着学习)简单的理解就是推拉,即吧电压调高或者可以吧电压调低。他是用来控制输出的,而不能用来输入数据。疑问 这里可以输出数据 还是只能输出高低电平? (一般用来i按揭数字器件)

3:跑马等硬件连接图

  • 从图中可以看出来,LED1/LED0 分别连着芯片管脚PB5/PE5;并且另一端都是连着高电平VCC3.3。 那么我们只需要将PB5或者PE5设置开漏输出低电平就会点亮LED,设置高电平大于等于VCC3.3 那么就会熄灭LED。(大致逻辑如此)


4:需要用到的库函数

首先在代码中加上如下文件,并且在main函数中包含这些头文件;

头文件:stm32f10x_gpio.h

源文件:stm32f10x_gpio.c

(可以通过keil 自带的Manage run-Time Environment工具添加)

  • 本次使用到的函数:
//初始化函数:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
//读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
//读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
//设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);


2:环境搭建:

1:创建工程

a:选择型号:


b:这里选择我们运行程序的三个相关的。

1:内核接口,所有函数最终调用的是他,这里也是stm32 光放提供的

2:第二个GPIO相关的,也是我们即将点亮LED使用的用户接口

3:启动相关的程序,怎么从汇编代码调用到C语言。这里不懂得可以看《30天自制操作系统》

c:工程建立好了如下:

d:设置烧录工具

e:设置烧录方式

f:到这里简单的工程就创建好了

编译的时候可能遇到如下错误

错误1:

D:\soft\keil5\packs\Keil\STM32F1xx_DFP\1.1.0\Device\StdPeriph_Driver\src\stm32f10x_rcc.c(273): warning: #223-D: function "assert_param" declared implicitly

assert_param(IS_RCC_HSE(RCC_HSE));

如下修改方法:

https://blog.csdn.net/tujidi1csd/article/details/52711688


错误2:

D:\soft\keil5\packs\Keil\STM32F1xx_DFP\1.1.0\Device\Include\stm32f10x.h(8302): error: #5: cannot open source input file "stm32f10x_conf.h": No such file or directory

#include "stm32f10x_conf.h"

修改方法如下图:

3:开始真正的流水灯程序编写

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表