一、配置引脚(略)

二、程序设计

--------------------------------------------------------------------------------------------------

在tim.h这个头文件中声明4个函数

--------------------------------------------------------------------------------------------------

/* USER CODE BEGIN Prototypes */
void TIM1_SetAutoReload(uint16_t usAuto);
void TIM1_SetCompare1(uint16_t usComp);
void TIM3_SetCompare1(uint16_t usComp);
void TIM_GetCapture(uint16_t *pusBuf);
/* USER CODE END Prototypes */

--------------------------------------------------------------------------------------------------

在tim.c完成上述4个函数的实现

--------------------------------------------------------------------------------------------------

 /* USER CODE BEGIN TIM1_Init 2 */HAL_TIM_PWM_Start(&htim1,2);/* USER CODE END TIM1_Init 2 *//* USER CODE BEGIN TIM2_Init 2 */HAL_TIM_IC_Start(&htim2,TIM_CHANNEL_1);HAL_TIM_IC_Start(&htim2,TIM_CHANNEL_2);/* USER CODE END TIM2_Init 2 *//* USER CODE BEGIN TIM3_Init 2 */HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);/* USER CODE END TIM3_Init 2 */
/* USER CODE BEGIN 1 */
void TIM1_SetAutoReload(uint16_t usAuto)
{TIM1->ARR=usAuto;
}
void TIM1_SetCompare1(uint16_t usComp)
{TIM1->CCR1=usComp;
}
void TIM3_SetCompare1(uint16_t usComp)
{TIM3->CCMR1=usComp;
}
void TIM_GetCapture(uint16_t *pusBuf)
{pusBuf[0]=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1)+1;pusBuf[1]=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2)+1;
}
/* USER CODE END 1 */

--------------------------------------------------------------------------------------------------

1.定义变量

2.在main.c中加stdio.h、lcd.h三个头文件

3.声明函数LCD_Proc()和KEY_Proc()

4.在while(1)中加入函数LCD_Proc()和KEY_Proc()

5.实现函数LCD_Proc()和KEY_Proc()

--------------------------------------------------------------------------------------------------

/* USER CODE BEGIN PV */
uint8_t ucKey;                              /* 按键值 */
uint16_t usComp=1000;                      /* TIM输出比较值  */
uint16_t usCapt[2];                         /* TIM输入捕捉值 */
uint8_t ucLcd[21];                          /* LCD值 */
uint8_t ucState;                            /* 界面状态 */
/* USER CODE END PV */
/* USER CODE BEGIN Includes */
#include "lcd.h"
#include "stdio.h"
/* USER CODE END Includes */
/* USER CODE BEGIN PFP */
void LCD_Proc(void);
void KEY_Proc(void);                /* 按键处理 */
/* USER CODE END PFP */
 /* USER CODE BEGIN 2 */LCD_Init();                                    LCD_Clear(Black);                      LCD_SetTextColor(White);            LCD_SetBackColor(Black);         /* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */LED_Proc();LCD_Proc();KEY_Proc(); }/* USER CODE END 3 */
/* USER CODE BEGIN 4 */
void LCD_Proc(void)
{if(ucState == 0)                             /* 数据界面 */{sprintf((char*)ucLcd, "    Page One ");LCD_DisplayStringLine(Line2, ucLcd);            TIM_GetCapture(usCapt);sprintf((char*)ucLcd, "  FRE:%05u B2:%04u ",1000000/usCapt[0],usComp);LCD_DisplayStringLine(Line4, ucLcd);sprintf((char*)ucLcd, "  PER:%05u WID:%04u ",usCapt[0],usCapt[1]);LCD_DisplayStringLine(Line6, ucLcd);         }else{sprintf((char*)ucLcd, "    Page Two ");LCD_DisplayStringLine(Line2, ucLcd);     sprintf((char*)ucLcd, "    Ni hao");LCD_DisplayStringLine(Line4, ucLcd);          sprintf((char*)ucLcd, "    ZiDongHua");LCD_DisplayStringLine(Line6, ucLcd);}
}
void KEY_Proc(void)
{uint8_t ucKey_Val = 0;ucKey_Val = KEY_Read();            /* 按键读取 */if(ucKey_Val != ucKey)           /* 键值变化 */ucKey = ucKey_Val;               /* 保存键值 */elseucKey_Val = 0;                   /* 清除键值 */switch(ucKey_Val){case 1:                             /* B1按下 */ucState ^= 1;                     /* 切换界面状态 */     LCD_Clear(Black);                     /* LCD清屏 */break;case 2:                                /* B2按下 */usComp += 1000;if(usComp ==10000)usComp = 1000;TIM1_SetCompare1(usComp>>1);TIM3_SetCompare1(usComp);}
}

蓝桥杯STM32G431学习之TIM程序设计(四)相关推荐

  1. 蓝桥杯STM32G431学习记录9——基本定时器CubeMX配置及使用

    定时器模块 定时器总体概述 定时器计数方式 复用引脚分配图(可通过此图查阅各个IO口的复用功能并进行配置) 基本定时器 基本定时器TIM6/7内部结构图 基本定时器CubeMX配置 basic_tim ...

  2. 蓝桥杯STM32G431学习记录4——LCD的使用

    LCD的配置 根据比赛提供的赛场资源数据包(G431)中的LCD_Test例程打开CubeMX生成的代码可直接使用 main.c中对LCD使用的程序编写 #include "main.h&q ...

  3. 【蓝桥杯-单片机学习笔记(十四)】DS1302

    一.DS1302介绍 1.功能介绍 DS1302包括时钟/日历寄存器和31字节(8位)的数据暂存寄存器,数据通信仅通过一条串行输入输出口,实时时钟/日历提供包括秒.分.时.日期.月份和年份信息.闰年可 ...

  4. 【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

    一.要求 在CT107D单片机训练综合平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份"2022",接着是2个分隔符"--",最后两位是月份,从1 ...

  5. 蓝桥杯STM32G431RBT6学习——定时器中断

    蓝桥杯STM32G431RBT6学习--定时器中断 前言 从网络上的资料来看,蓝桥杯嵌入式好像并不考外部中断(毕竟通常只是个按键应用),因此跳过进行定时器的学习. STM32单片机的定时器通常分为高级 ...

  6. 蓝桥杯单片机学习日记3-矩阵键盘的使用,线反转法,三步消抖,按键长按与短按

    此片文章用于记录蓝桥杯单片机的学习 篮球杯单片机上的矩阵按键原理图如下: 使用矩阵键盘时,要将跳线帽J5跳至KBD模式. 值得注意的是,若开发板上的单片机使用的为STC15,那么以上原理图适用.如果单 ...

  7. 【蓝桥杯-单片机学习笔记(六)】矩阵键盘控制数码管显示0~F

    一.要求 在CT107D单片机训练平台上,首先将J5处的跳线帽接到1~2引脚,使按键S4~S19组成4*4的矩阵键盘.在扫描按键的过程中,发现有按键触发信号后,待按键松开后,数码管显示相应的数字.按键 ...

  8. 蓝桥杯单片机学习13——NE555方波发生器频率测量

    NE555 简介 引脚图 原理图 真值表 工作原理 频率测量原理 定时器测量频率方法 代码实现 总结(一堆废话) 简介 NE555是一种高度稳定的控制器,内部用三个阻值为5KΩ的电阻分压,因此叫做55 ...

  9. 蓝桥杯单片机学习11——PCF8591A/DD/A转换芯片

    上期我们学习了DS1302实时时钟的基本使用,现在我们来学习PCF8591A/D&D/A转换芯片的相关内容 蓝桥杯单片机学习11--PCF8591A/D&D/A转换芯片 PCF8591 ...

最新文章

  1. 设置一个双色球脚本(2)并带颜色输出
  2. c语言编程 验证用户名和密码是否正确(函数定义),《C语言程序设计教程》习题参考答案[精品资料].doc...
  3. 基于哈希表的索引堆变形(Hackerrank: QHEAP1)
  4. python保存模块_Python使用Pickle模块进行数据保存和读取的讲解
  5. inuri .php id=,php常用函数(遇见就补充)
  6. 坯子库曲面推拉教程_一招曲面流动,搞定99%异形建模
  7. MySQL高可用架构对比
  8. 来自java文档 InputStream类
  9. 《Cisco IOS XR技术精要》一2.7 高可用架
  10. php里面求坐标的间距,php如何计算两坐标点之间的距离
  11. 偷懒才能编程序——计算机达人成长之路(18)
  12. Anaconda3安装以及常用命令
  13. AVI视频怎么转换成MOV视频
  14. STM32F205 HAL库 RTC软件复位后不准
  15. [原创]开心农场助手V1.21 发布
  16. Raptor码(一):2007RFC5053标准编解码学习
  17. UVA 1212 - Duopoly(最小割)
  18. [折腾日记]win10 ,ubuntu双系统安装避坑指南
  19. 2074:【21CSPJ普及组】分糖果(candy)
  20. Mysql修改表中字段名称、字段类型

热门文章

  1. 软件测试工程师在职研究生,在职研究生工科
  2. 分布式系统中的“无状态”和“有状态”详解
  3. 七牛云 QVM 「1 元上云」领取攻略 企业如何低成本上云必读
  4. 【POJ 3321】Apple Tree(树的dfs序+树状数组)
  5. 高清时代4K H.265/HEVC来临---OTT/IPTV直播系统大发展
  6. H3C堆叠实验配置(精品系列避坑篇)
  7. 明星热图|宋轶、辛芷蕾、王丽坤等演绎服饰新品;肖战代言李宁;林俊杰献唱迪士尼经典歌曲...
  8. DM365 IPNC软件架构详解
  9. PF526系列高性能的二维码解码芯片
  10. 【题解】POJ 1852 Ants(搜索)