实验二 呼吸灯功能实验

一、实验目的

1、掌握STM32F103定时器程序设计流程;

2、熟悉STM32固件库的基本使用。

二、实验要求

2.1 实验原理

1、使用SysTick定时方式控制LED闪烁;

2、使用通用定时器产生PWM脉冲,通过调整占空比实现两个目标:

(1)连接到STM32F103上的LED亮度从暗到亮、再从亮到暗,一次循环,实现呼吸灯效果;

(2)使用数字示波器查看PWM的波形图。

2.2 实验软件

电脑、Keil uVision5软件、Proteus 8 Professional软件。

三、实验****过程

3.1 代码开发

按照书本中实验流程在Keil中完成中断实验的代码开发;

3.2 原理图设计

在Proteus中完成原理图的设计,下图为呼吸灯实验原理图。

图1 呼吸灯实验原理图

四、实验记录与总结

4.1 核心代码理解

本次实验核心需求在于利用PA7引脚控制LED实现呼吸灯效果。本质在于控制PA7端口生成PWM波形,并自动调整PA7输出的PWM波的占空比展示LED"呼吸"的效果。经查看数据手册得知PA7端口可复用TIM3的通道2,因此可以利用PA7的TIM3通道2的输出比较复用功能生成PWM波。

因此重点在于对PA7复用的TIM3_CH2的配置。首先必然是端口以及TIM3的基本初始化,查看参考手册容易得知TIM3挂载在APB1总线上,GPIOA挂载在APB2总线上,因此开启二者时钟代码如图2所示。

图2 时钟配置

然后对PA7端口进行配置,由于使用复用定时器功能,且要输出PWM波,因此配置为复用推挽输出模式即可,代码如图3所示。

图3 端口配置

接着就是对TIM3的输出比较功能的核心配置。本次使用的是TIM3的通道2,使用其输出比较功能生成PWM波形,因此重点在于使用的计数器频率以及自动重装载值ARR的设定。一般PWM生成使用100作为ARR即可,本次使用10MHz作为系统时钟,为方便计算使用10分频后的时钟作为计数器时钟频率即1us,最后产生一次PWM周期使用0.1ms可以躲避视觉暂留效应。然后计数方式一般为向上计数、高电平为有效电平使用PWM模式1等即可,其他配置一般非必要,最后使能TIM3即可,相关代码如图4所示。

图3 TIM3_CH2配置

最后主函数进行相关初始化并循环中不断高到低、低到高调整占空比即可基本实现LED呼吸灯效果,占空比调整逻辑如图4所示。

图4 占空比调整

4.2 实验结果

在Keil5中编译代码生成hex文件后,进入proteus8仿真环境加载对应hex文件后点击仿真,现象如图5所示。

图5 proteus仿真现象

4.3 问题与想法

1 、问题

在代码无致命问题时,对于这种与系统时钟强相关的仿真运行而言,示波器显示PWM占空比变化情况出现逐渐偏离同步变化的情况。

2 、想法

个人感觉,尽管proteus8软件仍在更新,但对于STM32单片机的仿真效果再一定条件小仍存在不足与缺陷,也可能受proteus版本影响。


笔者小白,能力有限,以上内容难免存在不足和纰漏,仅供参考,各位阅读时请带着批判性思维学习,遇到问题多查查。同时欢迎各位评论区批评指正。谢谢。

相关推荐
tianyue1003 小时前
STM32G431 ADC 多个channel 采集
stm32·单片机·嵌入式硬件
清风6666665 小时前
基于单片机的水泵效率温差法测量与报警系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
z20348315206 小时前
定时器练习报告
单片机·嵌入式硬件
zk006 小时前
内容分类目录
单片机·嵌入式硬件
安生生申7 小时前
STM32 ESP8266连接ONENET
c语言·stm32·单片机·嵌入式硬件·esp8266
广药门徒7 小时前
电子器件烧毁的底层逻辑与避坑指南
单片机·嵌入式硬件
点灯小铭11 小时前
基于单片机的社区医院小型高压蒸汽灭菌自动控制器设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
youcans_11 小时前
【动手学STM32G4】(3)STM32G431之定时器
stm32·单片机·嵌入式硬件·定时器
悠哉悠哉愿意11 小时前
【嵌入式学习笔记】AD/DA
笔记·单片机·嵌入式硬件·学习
松涛和鸣12 小时前
DAY47 FrameBuffer
c语言·数据库·单片机·sqlite·html