当前位置:网站首页>STM32学习笔记(白话文理解版)—小灯的点亮、闪烁、呼吸
STM32学习笔记(白话文理解版)—小灯的点亮、闪烁、呼吸
2022-08-11 05:25:00 【LaiGuo.】
STM32学习笔记(白话文理解版)—小灯的点亮、闪烁、呼吸
目录
一、点灯原理
以stm32C8T6最小系统板为例:
- 原理:PC13输出低电平,则LED正向导通,LED灯亮,故电灯任务可变为,使单片机IO引脚输出低电平。
- 实质:控制单片机引脚输出高电平或低电平
二、基本点灯方式
方法:
1.配置GPIO引脚
2.控制GPIO引脚输出高低电平
(1)主函数部分(任选一种):
- 第一种主函数
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
int main (void)//主程序
{
LED_Init();//调用自己写的函数,目的让LED初始化
while(1)
{
GPIO_WriteBit(GPIOC,GPIO_Pin_13,(BitAction)(0)); //可理解为,在PC13引脚,写入0
}
}
- 第二种主函数
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
int main (void)
{
//主程序
LED_Init();
while(1)
{
//根据原理图得知,PC13低电平,LED灯电量:
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//使GPIO13置于低电平
//[GPIO_SetBits(GPIOC,GPIO_Pin_13置于高电平]
}
}
- 第三种主函数
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
int main (void)
{
//主程序
LED_Init();
while(1)
{
PCout(13)=1;//位带操作,令PC 13输出位1,其中有PBout、PCout、PAout等,表示哪个引脚组,()中为这个引脚组的具体哪个引脚,=为使这个引脚置1还是置0
}
}
(2)配置部分:
#include "led.h"
/* GPIO初始化可理解为: 1.使能时钟,时钟比喻为人的心脏,必须使能时钟,STM32才能正常工作 2.使用GPIO初始化函数 3.根据GPIO初始化函数要求,配置GPIO初始化 */
void LED_Init(void){
//LED灯的接口初始化
GPIO_InitTypeDef GPIO_InitStructure;//配置GPIO,使用GPIO初始化函数,函数得第二个参数是结构体,故定义结构体
//1.使能时钟,时钟比喻为人的心脏,必须使能时钟,STM32才能正常工作
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//3.根据GPIO初始化函数要求,配置GPIO初始化
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13; //初始化GPIOC引脚组的,第几个引脚?哦原来是引脚13
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式,见下文,具体哪些方式用到百度就行
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) 一般50MHZ
//2.使用GPIO初始化函数
GPIO_Init(GPIOC, &GPIO_InitStructure);//(GPIO初始化函数)第一个参数:初始化哪个引脚组;第二个参数:具体配置
}
/* 选择IO接口工作方式: GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入 GPIO_Mode_IPD 下拉输入 GPIO_Mode_IPU 上拉输入 GPIO_Mode_Out_PP 推挽输出 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_AF_PP 复用推挽输出 GPIO_Mode_AF_OD 复用开漏输出 */
三、小灯闪烁
(1)实现原理:
给小灯一个高电平,延时几秒;再给小灯一个低电平,延时几秒,如此反复就实现了闪灯操作
(2)实现程序:
- 只需要在原来程序基础上,在主程序中修改,进行延时即可实现
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
#include "delay.h"
int main (void)
{
//主程序
LED_Init();
while(1)
{
GPIO_SetBits(GPIOC,GPIO_Pin_13);
delay_ms(500);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
delay_ms(500);
}
}
四、小灯呼吸
(1)实现原理:
在一个周期内使小灯亮的时间增多,暗的时间减少,在人眼视觉上,便体现为小灯变亮。

(2)实现程序:
- 将延时函数参数设置成变量,运用C语言知识,不断改变变量的值,即调节了一个周期内的高低电平比列
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "led.h"
#include "delay.h"
int main (void)
{
//主程序
u8 MENU;
u16 i,t;
MENU = 0;//定义菜单
t = 1;
//上述定义能用到的变量
LED_Init();
while(1)
{
//灯是低电平亮
//如果是菜单0:使输出低电平的时间从1不断增大,也就是灯不断变亮
if(MENU == 0)
{
for(i=0;i<10;i++)//每一个t的值都执行10次,执行10次后t+1
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
delay_us(t);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
delay_us(501-t);
}
t++;
if(t == 500)//当t加到500时,执行菜单1
{
MENU = 1;
}
}
//如果是菜单1:使输出低电平的时间逐渐减小,也就是灯逐渐变暗
if(MENU == 1)
{
for(i=0;i<10;i++)//每一个t的值执行10次,执行10次后t减1
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
delay_us(t);
GPIO_SetBits(GPIOC,GPIO_Pin_13);
delay_us(501-t);
}
t--;
if(t == 1)//t从500减到1后执行菜单0
{
MENU = 0;
}
}
}
}
边栏推荐
- 目标检测——Faster R-CNN 之 Fast R-CNN
- Node-2.垃圾回收机制
- 实时姿态估计--基于空洞卷积的人体姿态估计网络
- Maykle Studio - HarmonyOS Application Development Fourth Training
- aPaaS和iPaaS的区别
- TAMNet:A loss-balanced multi-task model for simultaneous detection and segmentation
- LAGRANGIAN FLUID SIMULATION WITH CONTINUOUS CONVOLUTIONS
- CNN-based Point Cloud De-Noising
- 推出 Space Marketplace 测试版 | 新发布
- Joint 3D Instance Segmentation and Object Detection for Autonomous Driving
猜你喜欢
随机推荐
LAGRANGIAN FLUID SIMULATION WITH CONTINUOUS CONVOLUTIONS
Maykle Studio - HarmonyOS Application Development Third Training
Maykel Studio - Django Web Application Framework + MySQL Database Third Training
The latest safety helmet wearing recognition system in 2022
ASP.NET MVC 4中实现action的事务功能
mAPH——Waymo数据集
mAPH - Waymo dataset
The working principle and industry application of AI intelligent image recognition
安全帽识别系统-解决监管难题
Asp doNet Mvc4绑定js脚本用法
微信和抖音都到十亿级用户了,作为产品经理的你们觉得哪个产品更成功?
TAMNet: A loss-balanced multi-task model for simultaneous detection and segmentation
基于AI智能图像识别:4个不同的行业应用
支付牌照是什么意思
从概念认识AI
需求文档(PRD)撰写指南
C语言的编译
如何快速转行做产品经理
Ubuntu下安装mysql笔记
CVPR2022——A VERSATILE MULTI-VIEW FRAMEWORK









