蓝桥杯嵌入式模板构建_tim
1、基本定时器TIM6配置及说明(需要中断)
代码部分:
TIM6_Init(); //初始化定时器不意味着开启了中断,需要下面代码开启中断
HAL_TIM_Base_Start_IT(&htim6);//每100ms触发一次中断void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//溢出事件(更新事件)回调函数
{if (htim->Instance == TIM6){//想干啥干啥}
}
忘记配置中断优先级了,我是将优先级配置为2,0的
2、捕捉一路PWM值(PA15)(需要中断)
定时器2的配置,定时器3的配置是一样的
定时器从模式控制器用于接收除了内部时钟外的信号,该信号用于完成如下控制:
1.复位Reset模式:使用内部时钟作为时钟源,TI1/2外部有效信号复位计数器。例如,CH1触发输入上升沿有效时,计数器复位到默认值0。
2.门控Enable模式:使用内部时钟作为时钟源,根据TI1/2外部电平情况运行计数器。比如当CH1输入为高电平时候,定时器正常计数;当CH1输入为低电平时,停止计数。
3.触发Enable模式:使用内部时钟作为时钟源, TI1/2外部触发启动计数器。例如,CH1触发输入上升沿时,定时器启动运行。
4.外部时钟模式2+触发模式:使用外部ETR作为时钟源,配合其他(1,2,3)的触发启动模式。
代码:
//初始化
HAL_TIM_Base_Start_IT(&htim2); //启动定时器 ,注意不是HAL_TIM_Base_Start
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); //启动定时器通道输入捕获并开启中断,注意不是HAL_TIM_IC_Start
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);//回调函数
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM2){if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)//注意是HAL_TIM_ACTIVE_CHANNEL_1,不是TIM_CHANNEL_1{PWM_T_Count = HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1)+1;PWM_Duty = (float)PWM_D_Count/PWM_T_Count;}else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2){PWM_D_Count = HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2)+1;}}
}
注意
注意不是HAL_TIM_Base_Start、HAL_TIM_IC_Start,而是HAL_TIM_Base_Start_IT、HAL_TIM_IC_Start_IT
判断通道的时候是HAL_TIM_ACTIVE_CHANNEL_1,不是TIM_CHANNEL_1
忘记配置中断优先级了,PWM输入我是将优先级配置为3,0的
3、PWM波的输出(PA6和PA7)(输出PWM不需要中断)
上图的Pulse为300,不是30,写错了,Pulse是占空比的意思
代码:
TIM3_Init();
TIM17_Init();
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); //启动TIM3、TIM17PWM输出
HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1); //只需要开启就能输出PWM了,不需要其他的设置
4、输出方波(PA2,TIM15_CH1)(需要中断)
忘记配置中断优先级了,我是将优先级配置为2,0的
代码:
//初始化
TIM15_Init();
HAL_TIM_OC_Start_IT(&htim15, TIM_CHANNEL_1); //启动CH1比较输出//回调函数
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == TIM15){if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1){__HAL_TIM_SET_COMPARE(htim,TIM_CHANNEL_1,(__HAL_TIM_GetCounter(htim)+500));//再过500个单位再中断一次//如果是1M的分频后时钟,则方波频率为100000/(2*500)=1000HZ//如果是100,则100000/(2*100)=5000HZ}}
}
蓝桥杯嵌入式模板构建_tim相关推荐
- 蓝桥杯嵌入式模板的构建——STM32G431RB(LCD和ADC采集电压)
基于LED和按键的模板来写的 下载工程的链接 蓝桥杯嵌入式模板的构建--STM32G431RB(LED和按键的配置)-其它文档类资源-CSDN下载这个模板亲测有效只写了按键三和按键4对LED进行点灯和 ...
- 【蓝桥杯嵌入式】第六届省赛程序题项目代码及讲解
文章目录 蓝桥杯嵌入式第六届省赛 介绍 配置 RTC配置 配置ADC 配置串口: LED和按键的配置 E2PROM 头文件 初始化 串口测试 LCD测试 RTC测试 ADC测试 按键和LED测试 E2 ...
- 突击蓝桥杯嵌入式(六)——第十届省赛真题
突击蓝桥杯嵌入式(六)--第十届省赛真题 一.题干 二.题目分析 考点1.ADC(没啥好说的) 占用引脚PB15(R37) 考点2:按键4个(PB0,PB1,PB2,PA0) 考点3:LCD,高亮 考 ...
- 【蓝桥杯嵌入式】【STM32】7_RTC之实时时间显示和硬件闹钟设置
文章目录 1.RTC的三个可用时钟源 2.RTC框图 3.写代码前需要知道的一些标志位 4.配置流程 5.源代码 6.关于设置闹钟这件事 6.1.配置流程 6.2.实验源代码 下载工程文件: ...
- 蓝桥杯嵌入式比赛LCD屏如何高亮显示某一个字符
蓝桥杯嵌入式第九届赛题用到了高亮显示,主要由 void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);函数来完成,这个函数不再是一下子操作一行了,而是一 ...
- 蓝桥杯嵌入式板-解决LCD使LED亮灭混乱的办法
比赛板用的是stm32f103RB芯片,64管脚,LED与LCD同用了管脚PC8~PC15(对应LED1~LED8),所以板子上增用了一个锁存器--M74HC573.在控制LED的时候,只需在输出对应 ...
- 第九届蓝桥杯-嵌入式比赛体会与备赛经验
原文地址:http://www.cnblogs.com/NickQ/p/8721317.html 说起蓝桥杯,相信很多电子类的学生,应该很熟悉了吧...上周日,我也去湖北工业大学参与了一下.说起这次经 ...
- 蓝桥杯嵌入式CT117E硬件开发平台经验分享11 | 第九届蓝桥杯国赛题
基于 基于 CT117E 嵌入式竞赛板 嵌入式竞赛板 的 "电子秤"程序设计与调试 赛题硬件框图 由于赛题细节多,赛题PDF要求书放入了附件,链接后续加入.本文主要讲述本届题目的困 ...
- 国信长天蓝桥杯嵌入式类——stm32——使用keil4建立工程文件过程
蓝桥杯嵌入式----使用keil4建立工程文件过程 目录 蓝桥杯嵌入式----使用keil4建立工程文件过程 一.完成文件建立 (一).先建立名为test工程文件夹,如图.并建立如下几个文件夹 (二) ...
最新文章
- matplotlib绘图库入门
- 微服务架构 — 服务治理 — 服务限流、服务降级、服务熔断
- oracle 创建临时表报权限不足,ORACLE 临时表空间满了的原因解决方案
- python中messagebox用法实例_pyqt4教程之messagebox使用示例分享
- 前端学习(2925):vue改变样式1
- clone是深拷贝还是浅拷贝_Python中的浅拷贝和深拷贝
- 随想录(一个android原生app的代码赏析)
- 力扣——LCP 37. 最小矩形面积(困难)
- cURL 原作者收到死亡恐吓邮件!
- cas client 更新ticket_有人知道 cas单点登录系统是怎么样取得proxyticket的?
- 基于OpenCV的人脸识别考勤系统——创业计划书
- 打开软件后跳出服务器正在运行中,win10系统打开软件提示“服务器正在运行中”的操作步骤...
- gis利器之Gdal(二)shp数据读取
- 基于Servlet的学生管理系统
- 9月30日skype事件
- 蒸汽流量计算软件_海口气体腰轮订制,涡街流量计脉冲,期待合作
- Java NIO笔记05
- java实现评论功能_Java实现评论回复功能的完整步骤
- 计算机综合应用教材,系统测评计算机综合应用技能期末作业教材.doc
- Hadoop之仿写搜索引擎