【蓝桥杯嵌入式】四、外设驱动(基础)基础定时器

 温馨提示:

  • 部分内容在前面的文章中已经讲解,可以从附录快速访问。
  • 带有”小白教程“的文章是针对小白的STM32HAL库教程,老司机直接看一条龙部分就行。

【蓝桥杯嵌入式】专栏目录链接

目录

理论知识

基本定时器(TIM6和TIM7)

一、需求分析

1、需要的外设资源分析

 2、外设具体分析

3、软件分析

二、软件配置

1、新建项目

2、TIM6、7配置

a、模式配置

b、中断配置

三、代码编写

分析

WHIILE段代码

中断回调函数

四、运行测试


理论知识

        STM32G431x6/x8/xB器件包括两个先进的电机控制定时器,多达六个通用定时器,两个基本定时器,一个低功耗定时器,两个看门狗定时器和一个SysTick定时器。

        本文章先介绍比较简单的基本定时器,较复杂的定时器会在后面介绍,还有比赛常考的PWM波的输出和读取操作也会着重介绍。
        重要公式:定时器频率 = AP

### 蓝桥杯嵌入式定时器控制LED闪烁的功能实现 在蓝桥杯嵌入式竞赛中,通过定时器实现LED灯的闪烁是一个常见的题目。以下是基于提供的引用内容以及专业知识构建的一个完整的解决方案。 #### 定时器初始化与LED控制逻辑 为了实现LED灯的闪烁功能,可以利用STM32微控制器中的通用定时器(如TIMx)。具体来说,可以通过设置输出比较模式来触发中断或者轮询检测定时器的状态变化,从而改变LED灯的状态。以下是一段示例代码: ```c #include "stm32f4xx_hal.h" #include "led.h" // 初始化定时器 TIM2 的输出比较功能 void MX_TIM2_Init(void) { TIM_HandleTypeDef htim2; TIM_OC_InitTypeDef sConfigOC; __HAL_RCC_TIM2_CLK_ENABLE(); htim2.Instance = TIM2; htim2.Init.Prescaler = 839; // 设置预分频器,假设系统时钟为84MHz,则计数频率约为100kHz htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 9999; // 自动重装载值,周期约等于1秒 (10ms * 100次) htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&htim2); sConfigOC.OCMode = TIM_OCMODE_TOGGLE; // 切换模式 sConfigOC.Pulse = 5000; // 占空比为50% sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1); } int main(void) { HAL_Init(); SystemClock_Config(); // 配置系统时钟 MX_GPIO_Init(); // 初始化GPIO MX_TIM2_Init(); // 初始化定时器 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // 启动PWM通道1 while (1) { uint32_t state = HAL_GPIO_ReadPin(TIM_CH1_GPIO_Port, TIM_CH1_Pin); if (state == GPIO_PIN_SET) { // 如果定时器输出为高电平 LED_Off(0xFF); // 熄灭所有LED灯 } else { // 如果定时器输出为低电平 LED_On(0xFF); // 点亮所有LED灯 } } } ``` 上述代码实现了如下功能: - 使用 `MX_TIM2_Init` 函数完成定时器 TIM2 的初始化[^1]。 - 将定时器配置为 PWM 输出切换模式,使得其能够按照设定的时间间隔自动翻转输出信号[^4]。 - 在主循环中读取 TIM_CH1 引脚的状态,并根据该状态调用 `LED_On` 或者 `LED_Off` 来控制LED灯的开关行为[^3]。 #### 注意事项 - **硬件资源分配**:确保开发板上的实际引脚定义与代码一致。例如,`TIM_CH1_GPIO_Port` 和 `TIM_CH1_Pin` 应当对应到具体的物理端口和针脚编号。 - **库函数支持**:本方案依赖于 STM32CubeMX 提供的标准外设驱动库 HAL (Hardware Abstraction Layer),因此需要正确安装并导入相关头文件[^2]。 - **调试验证**:建议先单独测试定时器的工作情况再加入LED部分,以便快速定位可能存在的问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值