栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

STM32 CubeMX开发 F1通用定时器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

STM32 CubeMX开发 F1通用定时器

STM32 CubeMX开发 F1通用定时器
  • 1 新建工程
  • 2 配置时钟
  • 3 配置Timer
  • 4 配置LED灯引脚
  • 5 生成工程编写呼吸灯
  • 6 中断处理
  • 7 编译下载与演示
  • X 往期文章

我手上有一块精英板,型号是STM32F103ZET6,就以此为例介绍一下32单片机的定时器怎么在CubeMX下配置,并用一个呼吸灯展示一下定时器的效果

1 新建工程


配置工程信息

2 配置时钟

从原理图中找到开发板上的外部晶振为8M

设置RCC的高速时钟源为外部晶振

设置时钟图

芯片手册中也可以看到APB1的上限频率,和时钟图中是对应的

在手册中还可以找到哪些定时器挂在APB1下哪些定时器挂在APB2下
挂在APB1下的外设

挂在APB2下的外设

3 配置Timer

这里我选TIM1举例配置一个中断频率为1KHz的定时器,并在定时器的中断内完成呼吸灯任务

根据前面讲到的,我们知道TIM1挂在APB2下,则Tclk=72M,计算ARR和PSC即可

使能中断

4 配置LED灯引脚

查看原理图

LED0

LED1

CubeMX中配置引脚
PB5配置为Outuput

同理PE5配置为Output

GPIO设置
LED1同理,修改Label后右边的可视化IO也可以看到名称发生变化

配置Debug(如果需要debug的情况下)

5 生成工程编写呼吸灯

点击生成并打开

按照上期讲解,加入我们自己的代码文件,并在小锤子的CC++选项卡中加入我们代码的头文件路径

打开我们的代码文件引入头们的头文件并打开

引入32的底层库文件

#ifndef _BREATH_H_
#define _BREATH_H_
#include "stm32f1xx.h"





#endif

回到breath.c中

#include "breath.h"
#include "main.h" // main.h里有Cube为我们生成的IO口宏定义
#include "gpio.h"// 用到GPIO库函数

uint32_t clock_count = 0;
uint16_t light_count = 0;//变频变量
uint8_t k = 0;//增减标识k=0增k=1减
uint8_t T_pwm = 10;//PWM周期
uint8_t T_bp = 50;//变频周期
//总周期=T_pwm*T_bp*2 ms 此例程为10*50*2=1000ms
void Breath_light(void){
	
	if(clock_count%T_bp == 0)//变频周期50ms
	{
		if(light_count=light_count){
		HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,0);
		HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,1);
	}
	//计数器更新
	clock_count++;
}

在breath.h中把我们编写的函数声明为外部函数

#ifndef _BREATH_H_
#define _BREATH_H_
#include "stm32f1xx.h"

void Breath_light(void);



#endif
6 中断处理

在main.c中启动定时器中断

在中断处理文件中调用breach函数

打开这个文件,并在指定位置引入我们的头文件

往下翻,可以找到定时器中断服务函数,在这里调用breath

7 编译下载与演示

这里说一个HAL库的缺点,在选择这个选项的时候编译会比较慢

这个信息可以帮助你goto definition,但是当你习惯使用全局搜索的时候就会觉得这个功能在编译能更快的条件下也就没那么必要了
接下来编译、无报错后下载、按下reset,点灯工程师诞生了!

关于CubeMX的更多详细使用方法后续更新


X 往期文章

STM32 CubeMX开发及f103开发环境搭建

鸿蒙(HMOS)开发基础篇(二)开发初体验-多设备协同

鸿蒙(HMOS)开发基础篇(一)环境搭建 & Helloworld

今天,我是数据库的BOS(读者-写者问题)

哲学家不会吃饭了,我们快来帮帮他们(C语言、进程通信)

Python+OpenCV+imutils的简单图片处理(放缩、翻转、旋转、灰度RGB提取)

python手写K-means实现二维聚类.


如果文中有误,还请在评论区指正。这里是海小皮,我们一同进步!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号