博客
关于我
2020年嵌入式第十一届省赛真题解析
阅读量:798 次
发布时间:2023-04-16

本文共 1454 字,大约阅读时间需要 4 分钟。

全片分析与程序实现

一、系统概述

系统基于STM32微控制器,通过定时器和PWM技术实现对PA6和PA7引脚的控制。系统主要包含按键扫描、LED显示、LCD显示、UART通信、ADC采样以及定时器PWM输出等功能。按键B3用于切换显示界面和模式切换,系统能够在数据界面和参数界面之间切换,并根据ADC输入值调整输出占空比。

二、状态机分析

系统采用状态机控制,状态包括:

  • 状态0:数据界面
  • 状态1:参数界面
  • 状态2:自动模式
  • 状态3:手动模式

状态机通过按键B3切换,按键B3在数据界面下保持原占空比不变,同时切换频率输出。

三、PWM控制实现

系统使用定时器TIM3和TIM17输出PWM信号,分别控制PA6和PA7引脚。

1. PWM频率调节

  • 定时器配置
    • 主频为80MHz,经分频后得到计数频率1MHz。
    • 自动重载值决定PWM周期:
      • PA6(绿色):200Hz(周期1000)
      • PA7(黄色):100Hz(周期500)

2. 占空比调节

通过HAL_TIM_SET_COMPARE函数设置占空比:

  • 占空比计算:占空比为V37/3.3 × 100%
  • 配置方式
    • 自动模式:PA6占空比为100% × V37/3.3,PA7占空比为50% × V37/3.3
    • 手动模式:PA6占空比为50% × V37/3.3,PA7占空比为100% × V37/3.3

四、程序实现

程序主要包含以下功能:

  • 按键扫描:检测按键状态,切换状态机和调整占空比。
  • LED控制:根据状态显示对应的LED信号。
  • LCD显示:显示当前状态信息和参数值。
  • ADC采样:读取V37值,用于占空比计算。
  • 1. 状态切换逻辑

    • 数据界面切换:LCD显示切换为参数界面。
    • 模式切换:自动模式切换为手动模式或反之。

    2. 占空比调整

    • 数据界面:显示参数界面,PA6和PA7值可调。
    • 参数界面:显示当前占空比,PA6和PA7值自动调整。

    五、关键代码解析

    // 定时器配置HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); // PA6HAL_TIM_PWM_Start(&htim17, TIM_CHANNEL_1); // PA7// 按键扫描void Key_Proc(void) {    if ((uwTick - uwTick_Key_Set_Point) < 50) return;    uwTick_Key_Set_Point = uwTick;    ucKey_Val = Key_Scan();    // 切换状态机和调整占空比}// LCD显示void Lcd_Proc(void) {    if ((uwTick - uwTick_Lcd_Set_Point) < 100) return;    uwTick_Lcd_Set_Point = uwTick;    // 刷新LCD显示    // 状态显示    if (state == 2 || state == 3) {        sprintf(Lcd_Disp_String, "    Mode:AUTO");    } else {        sprintf(Lcd_Disp_String, "    Mode:MANU");    }}

    六、总结

    本系统通过状态机和PWM技术实现了对PA6和PA7引脚的精确控制,支持自动模式和手动模式切换,且占空比可根据需求调整。系统结构清晰,代码简洁,易于扩展和维护。

    转载地址:http://eygfk.baihongyu.com/

    你可能感兴趣的文章