【stm32/CubeMX、HAL库】嵌入式实验六:定时器(3)|外部脉冲计数

2024-05-24 21:52

本文主要是介绍【stm32/CubeMX、HAL库】嵌入式实验六:定时器(3)|外部脉冲计数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:

【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p=13&share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

《嵌入式系统基础与实践》刘黎明等编著,第九章定时器,PWM从P289开始。

【【STM32教程】入门教程(基于HAL库+CubeMX+MDK-ARM)】 https://www.bilibili.com/video/BV1y7411m7gg/?share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

定时器引脚映射

STM32F103定时器复用功能映射及其通道_stm32定时器通道复用-CSDN博客

参看上面的文章或者查看手册(8.3.7)。

实验内容

3、外部脉冲计数设计。 设计计数器,对外部脉冲(开发板上 PIC 单片机提供的脉冲信号)进行计数,并在 数码管上实时显示计数值。

提供信号的外部电路(TEST引脚处,可输出1khz,2khz等多种频率):

使用定时器2进行外部脉冲计数,使用的引脚为PA0

cubeMX配置如下(由于频率过快,计数值设为1000-1,计1000次才真正记一次数):

 

硬件连接:用跳线短接 PA0和TEST输出引脚。

代码编写同按键外部中断的写法大同小异:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

/*定时器更新中断回调函数

1.该函数由定时器中断通用处理函数 HAL_TIM_IRQHandler 调用,完成所 有定时器的更新中 断的任务处理

2.函数内部需要根据定时器句柄的实例来判断是哪一个定时器产生的本次更 新中断

3.函数由用户根据具体的处理任务编写 */

uint8_t flag=0;int res=0;
uint8_t table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40 };//10表示'-'
uint8_t s[]={0,0,0,0,0,0,0,0};void write_byte(uint8_t date){unsigned char i;for(i=0;i<8;i++){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,(date>>(7-i))&0x01);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,1);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,0);}HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,1);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,0);}void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==htim2.Instance){//int cntt=__HAL_TIM_GET_COUNTER(&htim2);测试用,取出计数寄存器的值res=res+1;flag=1;}
}

主函数中启动中断 

  HAL_TIM_Base_Start_IT(&htim2);

 while循环,只显示了计数值的末两位

 /* USER CODE BEGIN 3 */if(flag==1){flag=0;s[7]=res%10;s[6]=res/10%10;}for(int i=8;i<16;i++){write_byte(table[s[15-i]]);HAL_GPIO_WritePin(GPIOF,0x01<<i,0);HAL_Delay(1);HAL_GPIO_WritePin(GPIOF,0x01<<i,1);}//HAL_Delay(1000);}/* USER CODE END 3 */

这篇关于【stm32/CubeMX、HAL库】嵌入式实验六:定时器(3)|外部脉冲计数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999633

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)

LeetCode--204 计数质数

题目 统计所有小于非负整数 n 的质数的数量。 示例 示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 class Solution {public:int countPrimes(int n) {if (n <= 2) return 0;int cnt = 0;vector<bool> isPrime(n, true);

又看见定时器了,怎么这么想写了~~

1.scheduleUpdate(); 与virtual void update(float dt);   联合使用,就是每隔一段时间就调用一次update,实际上是每一帧都调用一次updata方法,scheduleUpdate();方法相当于开启了定时器。 2.schedule的作用和scheduleUpdate差不多,只是这个其实更好用一些,这个可以只是指定调用的方法,系统默认每一帧都调用一

高性能并行计算华为云实验五:

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建PageRank源码 3.2 makefile的创建和编译 3.3 主机配置文件建立与运行监测 四、实验结果与分析 4.1 采用默认的节点数量及迭代次数进行测试 4.2 分析并行化下节点数量与耗时的变化规律 4.3 分析迭代次数与耗时的变化规律 五、实验思考与总结 5.1 实验思考 5.2 实验总结 E

LoRaWAN在嵌入式网络通信中的应用:打造高效远程监控系统(附代码示例)

引言 随着物联网(IoT)技术的发展,远程监控系统在各个领域的应用越来越广泛。LoRaWAN(Long Range Wide Area Network)作为一种低功耗广域网通信协议,因其长距离传输、低功耗和高可靠性等特点,成为实现远程监控的理想选择。本文将详细介绍LoRaWAN的基本原理、应用场景,并通过一个具体的项目展示如何使用LoRaWAN实现远程监控系统。希望通过图文并茂的讲解,帮助读

嵌入式学习——数据结构(哈希、排序)——day50

1. 查找二叉树、搜索二叉树、平衡二叉树 2. 哈希表——人的身份证——哈希函数 3. 哈希冲突、哈希矛盾 4. 哈希代码 4.1 创建哈希表 4.2  5. 算法设计 5.1 正确性 5.2 可读性(高内聚、低耦合) 5.3 健壮性 5.4 高效率(时间复杂度)时间复杂度越低,效率越高, 5.5 低储存(空间复杂度)空间复杂度越低,存储空间越少 6.排序算法 6.1 冒

物联网系统运维——移动电商应用发布,Tomcat应用服务器,实验CentOS 7安装JDK与Tomcat,配置Tomcat Web管理界面

一.Tomcat应用服务器 1.Tomcat介绍 Tomcat是- -个免费的开源的Ser Ivet容器,它是Apache基金会的Jakarta 项目中的一个核心项目,由Apache, Sun和其他一 些公司及个人共同开发而成。Tomcat是一一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 在Tomcat中,应用程序的成部署很简

STM32HAL库--SDRAM实验(速记版)

STM32F429IGT6 自带了 256K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合, STM32F429 自带的这些内存就不够用了。比如使用 LTDC 驱动RGB 屏、跑算法或者跑 GUI 等,就可能不太够用,所以阿波罗 STM32F429 开发板板载了一颗 32M 字节容量的 SDRAM 芯片:W9825G6KH,满足大内存使用的需求。 1