网站首页 > 编程文章 正文
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:开始真正的流水灯程序编写
猜你喜欢
- 2025-05-21 单片机编程用什么软件?单片机开发软件有哪些?
- 2025-05-21 STM32 开发环境用哪个呢?MDK和IAR那个比较好?结合JLINKV8 的话。
- 2025-05-21 学习stm32单片机,必备工具和软件,你知道几个?华维建议收藏
- 2025-05-21 快速移植大容量STM32单片机的方法
- 2025-05-21 LittlevGL在STM32上的移植使用
- 2025-05-21 零基础学习STM32智能家居系统之STM32模板程序解读
- 2025-05-21 「基于NUCLEO-F746ZG电机开发应用」2.基于SDK5.4.5-工程构建
- 2025-05-21 STM32F030基于LL库的最小软件工程
- 2025-05-21 Keil界面模糊,怎样设置高清界面?
- 2025-05-21 RTOS从入门到精通-基于FreeRTOS
你 发表评论:
欢迎- 最近发表
-
- 90岁老人科目三一把过火爆网络!考驾照、爱美甲……这群“90后”比年轻人潮
- DNF:遗忘之地任务流程,适用于新手起小号,装备修理白漂
- dnf手游:“首款流拍宝珠”,6位玩家眼睁睁看着500万泰拉丢失!
- dnf手游:小熊卡正式升级!可附魔到工会勋章,千万别卖!
- dnf手游:首张“涨抗魔”粉卡火了!以前3万没人要现在准备断货!
- dnf手游:团本币增加!3月26号打团有坑提前避开,浪费门票?
- dnf手游:涨价20倍!曾经没人要的,如今已是妥妥的T0材料!
- dnf手游:“官方鼓励回归”火了,白送玩家+20装备和王子卡等!
- dnf手游:无根之源千万别用!竞拍系统一定要抢否则错过崛起机会
- dnf手游:DNF手游各职业技能加点攻略、装备推荐!小白一看就会
- 标签列表
-
- spire.doc (70)
- instanceclient (62)
- solidworks (78)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)