实验二 呼吸灯功能实验

一、实验目的

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版本影响。


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

相关推荐
不悔哥5 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20165 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子5 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡5 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5555 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡5 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9665 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛5 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
CHENKONG_CK5 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
三佛科技-187366133975 天前
128KB~512KB Flash车规级MCU选型指南(FT32A072 / FT32A103 系列)
单片机·嵌入式硬件