STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)

简介: STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)

1.基础知识点部分:


GPIO_Mode_AIN         模拟输入


GPIO_Mode_IN_FL     浮空输入


GPIO_Mode_IPD        上拉输入


GPIO_Mode_IPU        下拉输入


GPIO_Mode_Out_OD  开漏输出


GPIO_Mode_Out_PP   推挽输出


GPIO_Mode_AF_OD   复用开漏


GPIO_Mode_AF_FP   复用推挽


注:模拟输入对应GPIO无效,引脚接内部ADC。


   浮空输入,上拉输入,下拉输入都是可读取引脚电平。下拉输入,上拉输入分别有下拉电阻和上拉电阻,所以悬空时为低电平和高电平。浮空输入悬空时,电平不确定。


开漏输出,推挽输出,复用开漏,复用推挽可交叉理解。带开漏的表示高电平高阻态,低电平接VSS.带推挽的表示高电平接VDD,低电平接VSS。复用的功能由友上篇外设决定。


注:添加文件时,注意填写:USE_PERIPH_DRIVER


2.LED篇:


包含点亮LED+流水灯+闪烁


使用到的库函数:GPIO_Init();注意对应的参数,此处选择的是GPIO_Mode_Out_PP


GPIO_SetBits;             GPIO_ResetBits();等


注意事项:


GPIO_SetBits; 是指定端口置为高电平,熄灭(低电平点亮)


LED使用的一般是GPIOA的PA0~PA15引脚,且流水灯时,GPIO_PIN可直接写为GPIO_All。


流水灯时,思路是在while循环内,每次只有一个低电平(低电平点亮),其他均为高电平。例如,点亮最后一位的LED,需要为1111 1111 1111 1110(前十六位不能被使用),即为~0x0001,右侧第二位为1111 1111  1111 1101,即为~0x0002....


3.蜂鸣器篇:


使用的是GPIOB的Pin_12引脚


蜂鸣器分为有源蜂鸣器和无源蜂鸣器。区别是是否自带振荡源。有源蜂鸣器自带振荡源,连接电压即可发声。


原理是使GPIO的12引脚持续的置高电平,低电平....注意延时。


4.按键控制LED篇:


需要单独封装LED和按键控制函数,建议取名为led.c和Key.c。注意对应的头文件。


led.c:此处GPIO_Init,参数对应的是GPIO_PIN_1|GPIO_PIN_2   GPIO_Mode_Out_PP  


打开灯使用GPIO_Reset,关闭灯使用GPIO_ResetBits。与实际逻辑相反,需要封装void LED1_ON(void)和void LED1_OFF(void)等。需要在主函数内完成按下按键,灯点亮的逻辑,需要重新封装,推荐函数名起名为void LED1_Turn(void)和LED2_Turn。里面执行的逻辑是查看某一位是否置为高电平,使用GPIO_ReadOutPutDataBit。


key.c:此处使用的仍为GPIO_Init,参数为GPIOB的GPIO_PIN_1|GPIO_PIN_11。


此处注意需要自定义完成按键按下,返回1,不被按下就不传递或传递0给主函数,主函数对1或0判定即可(对LED1的判断)。此外LED2按下返回2,不被按下就不传递或传递0给主函数。


需要自定义函数Key_GetNum,需要的库函数是GPIO_ReadInputDataBit。


main.c:只需要循环内判断返回值是1还是0,是1就执行LED1_Turn(均以封装,直接使用),是2就执行LED2_Turn


5.OLED显示屏篇:


没什么逻辑,只写库函数


OLED_Clear();清屏函数

   OLED_ShowChar(1, 1, 'A');//在第一行一列显示A,字符需要用''

   OLED_ShowString(1, 3, "HelloWorld!");//在第一行第三列开始显示HelloWorld!,

                              //注:此处要查找数字的长度,超过就会截断,无法显示

   OLED_ShowNum(2, 1, 12345, 5);//在第二行一列显示12345,显示五个长度,

   //                       注:长度要适当

   OLED_ShowSignedNum(2, 7, -66, 2);//显示-66,第一位显示符号位

   OLED_ShowHexNum(3, 1, 0xAA55, 4);//显示AA55,十六进制

   OLED_ShowBinNum(4, 1, 0xAA55, 16);//显示2进制的AA55,即10101010 01010101

   OLED_Clear();//清屏。若只想清除某一位或某几位,使用OLED_ShowString();并添加空格.


6.光敏传感器控制蜂鸣器:


推荐封装光敏传感器为LightSensor,蜂鸣器封装为Buzzer,封装Buzzer_ON,内部通过置高电平完成蜂鸣器发声的操作。使用的是GPIO_Pin_12。


库函数使用GPIO_ReadInPutDataBit()==1,如果是就执行Buzzer_ON。


7.博主笔记:


字迹很丑,凑合看吧


e21f63db6c1d43e797728b3363a0dfd7.jpg


相关文章
|
1月前
|
传感器 数据采集 算法
【免费开源】基于 STM32F4 的四轴飞行器设计与实现——从零开始到成功起飞(项目源码打包分享)
四轴飞行器作为一种低空、低成本的遥感平台,已经在多个领域展现出广泛的应用潜力。相比其他类型的飞行器,它在硬件上结构紧凑、安装方便,但在软件层面却充满挑战——从传感器数据融合到姿态解算,再到快速且稳定的控制算法,每一环节都需要精心设计,也正因此让四轴飞行器更具技术魅力。
274 73
|
1月前
|
传感器 机器人 物联网
【免费开源】基于STM32的蓝牙小车/智能小车项目详解(附源码)
通过本项目,你可以系统掌握STM32外设控制、蓝牙通信、电机驱动和传感器数据处理技术,实现一辆可远程控制并具备避障功能的智能小车。该项目具有高度可扩展性,后续可增加循迹、自动寻路、摄像头等高级功能。
310 42
【免费开源】基于STM32的蓝牙小车/智能小车项目详解(附源码)
|
1月前
|
存储 编解码 开发者
基于STM32和OLED的小恐龙游戏项目设计与实现【免费开源】
小恐龙游戏最初是作为浏览器离线小游戏而广为人知,其简单的操作与生动的画面使其深受用户喜爱。本项目将经典的小恐龙跳跃游戏移植到嵌入式平台上,使用STM32微控制器作为核心控制器,OLED屏幕进行显示,搭配按键或触摸实现用户交互。通过本项目,既可以体验游戏开发在嵌入式系统上的实现方式,又能掌握STM32 GPIO、定时器、OLED驱动、按键扫描及简单动画实现技术。
基于STM32和OLED的小恐龙游戏项目设计与实现【免费开源】
|
1月前
|
传感器 数据采集 物联网
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
随着可穿戴设备的普及,智能手环逐渐成为健康管理、运动监测和生活便捷的重要工具。本项目旨在设计一款基于STM32微控制器和FreeRTOS实时操作系统的智能手环,具备心率监测、运动计步、睡眠分析以及蓝牙通信功能。通过FreeRTOS实现多任务调度,提高系统响应效率和资源利用率,同时保证低功耗设计,延长手环续航。
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
|
7月前
|
存储 安全 数据安全/隐私保护
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
本文介绍了基于STM32的Customer BootLoader刷新项目的第一部分:使用STM32CubeMX搭建UART串口通信工程。项目采用正点原子探索者v2开发板,通过USB串口与上位机通信,实现固件刷新功能。主要内容包括: 1. 硬件原理图介绍:详细描述了开发板的串口连接方式及电路图。 2. STM32CubeMX工程搭建:从创建新工程、配置系统时钟、USART串口设置到生成代码,一步步详细说明。 3. 代码编写:展示了如何使用HAL库实现串口接收和发送数据,并提供了main.c的完整代码。 4. 工程下载和调试:编译并下载工程到开发板,通过串口调试助手验证通信功能。
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
|
7月前
|
芯片 内存技术
STM32 Customer BootLoader 刷新项目 (二) 方案介绍
本项目设计了一款基于STM32的二级BootLoader,旨在为客户自定义启动过程提供软件更新和操作后门。BootLoader架构分为三层:ST自带Boot(SB)、客户定制化Boot(CB)和应用层(APP)。CB通过USART与MCU通信,支持多种指令如版本查询、擦除扇区、写入数据等,实现灵活的软件管理和更新功能。Flash空间分配为Sector 0-1用于CB,Sector 2-11用于APP。整个方案详细介绍了内存布局、跳转逻辑及支持的指令集,确保系统稳定运行并支持未来的扩展需求。
 STM32 Customer BootLoader 刷新项目 (二) 方案介绍
|
11月前
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
151 4
|
11月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
90 4
|
传感器 数据安全/隐私保护 数据格式
STM32CubeMX DHT11温湿度传感器
STM32CubeMX DHT11温湿度传感器
1217 11
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
320 10