【stm32入门教程】GPIO输入之按键控制LED&光敏传感器控制蜂鸣器

一、模块化编程LED函数

新建一个文件夹hardware用来存放硬件驱动

回到keil,在组里添加对应文件夹和路径

在hardware这里右键添加新的文件,选择。c文件

选择路径为hardware文件夹

接着用同样的方法添加。h文件

编写.h文件

封装LED.c代码

当没有弹出代码提示的话,可以按下快捷键ctrl+alt+空格

和之前讲的一样,编写LED初始化函数

至此,只需要调用一个初始化函数,LED的两个gpio口就可以直接初始化完成了

然后将该函数名放到.h文件里

然后再主函数调用

先包含头文件,然后再调用函数

警告的原因是新写的代码还没有更新,软件还不知道这个代码

烧录进去之后LED点亮,原因是默认低电平,

可以先加一个设置高电平的函数,就不会烧录后直接点亮了

可以定义函数来分别控制LED打开和关闭

二、模块化编程按键函数

按照上面同样的操作步骤编写key.c和key.h文件

编写初始化函数

设置模式为上拉输入,速度其实是输出速度,在这里并不用,选50mhz就行

编写读取按键值函数

第一个是读取端口的某个引脚值,第二个是读取整个端口的寄存器

第三个是读取输出数据寄存器的某一个位

第四个是读取输出数据寄存器的端口

三、模块化编程蜂鸣器函数

按照上面的步骤,添加文件和路径

编写初始化函数

驱动函数同上

四、模块化编程光敏传感器模块

初始化函数

读取端口函数

主函数

五、GPIO的使用方法

初始化时钟

定义结构体,赋值结构体

模式有八种,pin选择引脚(可按位或),speed选择输出速度(要求不高选择50mhz)

使用GPIO_Init函数将指定外设初始化

用8个主要的读取和写入函数

相关推荐
Industio_触觉智能12 小时前
RK3506 Buildroot系统目录地图-上|7个关键符号链接与构建产物全解析
嵌入式硬件·sdk·智能硬件·固件·瑞芯微·系统编译·rk3506
lzj_pxxw14 小时前
STM32移植FreeRTOS(Cmake+CubeMX)
vscode·stm32·嵌入式硬件
Zwawa15 小时前
屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系
c语言·单片机·嵌入式
물の韜16 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
Zw-awa17 小时前
屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系
stm32
无敌贵点大王19 小时前
从寄存器层面重学STM32(7)——定时器
stm32·单片机·嵌入式硬件
碧海银沙音频科技研究院19 小时前
粉色笔记本电脑每次要等把电池电耗尽才能开机问题解决方法
嵌入式硬件
wuyk5551 天前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
shijuejianceliu2 天前
传统规则视觉与嵌入式AI智能相机的技术差异
人工智能·嵌入式硬件·视觉检测·相机
Zw-awa2 天前
OLED为什么能显示字:软件I2C换成硬件I2C
stm32