STM32--STM32CubeMX的Timer3定时1ms功能HAL库操作

2023-11-09

一. STM32CubeMX的设置

① 时钟源的选择【Crystal/Ceramic Resonator】

② 调试方法选择【Serial Wire】

③ 时钟输入为40MHz

④ Timer3的参数设置

⑤ 使能Timer3的中断

点击【Generate Code】生成Keil5的代码工程。

二. 编写Keil5 代码

【tim.c】

/* USER CODE BEGIN 0 */
#include "gpio.h"
/* USER CODE END 0 */


/* USER CODE BEGIN 1 */

/*!
@Brief
	Timer3 callback function
@Param
	htim 					[Timer object]
@Return
	null
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
		static uint16_t TimerCount = 0;

		TimerCount++;
	
		//static unsigned char ledState = 0;
    if (htim == (&htim3))
    {
			//User processing function
			
			if(TimerCount == 1000)
			{
				HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
				TimerCount = 0;
			}			
    }
}

/* USER CODE END 1 */

【gpio.c】

/* USER CODE BEGIN 2 */

/*!
@Brief
	Config the GPIO.
@Param
	PIN_PORT		 	[The port of the PIN]
	PIN_Number		[The PIN number]
@Return
	null
*/
void GPIO_Config(GPIO_TypeDef *PIN_PORT, uint16_t PIN_Number)
{
	GPIO_InitTypeDef GPIO_InitStruct;			   //Define the GPIO_InitTypeDef structure 
	GPIO_InitStruct.Pin = PIN_Number;			   //Define the pin
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;		//Push-Pull output
	GPIO_InitStruct.Pull = GPIO_PULLUP;				//PULL-up mode
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;	//The pin rate is high speed
	HAL_GPIO_Init(PIN_PORT, &GPIO_InitStruct);
}

/*!
@Brief
	Config the user GPIO define.
@Param
	null
@Return
	null
*/
void GPIOUserInit(void)
{
	GPIO_Config(LED2_GPIO_PORT, LED2_PIN);
}

/* USER CODE END 2 */

【gpio.h】

/* USER CODE BEGIN Private defines */
#define LED2_PIN                           GPIO_PIN_5
#define LED2_GPIO_PORT                     GPIOA

#define GPIO_PIN_HIGH					    0x01
#define GPIO_PIN_LOW					    0x00
/* USER CODE END Private defines */

【main.c】

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
	uint8_t  Data[5] = {1, 2, 3, 4, 5};  //test code
	uint16_t CanID = 0x001;
	uint16_t usPWD_Duty = 0;
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  //MX_CAN1_Init();
  MX_ADC1_Init();
  MX_TIM2_Init();
  MX_USART2_UART_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
	
	/**Enable timer3**/
	HAL_TIM_Base_Start_IT(&htim3);
	/**Initialize CAN and filter and start the CAN**/
	//CAN_User_Init(&hcan1);
	
	/**GPIO user config LED**/
	GPIOUserInit();

	printf("Hello World\r\n");
	
	//HAL_UART_Receive_IT(&huart2, (uint8_t *)g_ucUSART_RecvBuffer, 1);
	
	printf("Hello World2\r\n");
	
	/**Start PWM Timer2Channel1**/
	//verify the PWM function
	//USER_TIM_PWM_OpenTim2Ch1();

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {	

  }
  /* USER CODE END 3 */
}

主要添加如下代码

HAL_TIM_Base_Start_IT() : 使能Timer

GPIOUserInit() : 初始化用户的GPIO

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32--STM32CubeMX的Timer3定时1ms功能HAL库操作 的相关文章

  • 在地址“0xXXXXXX”处中断,没有可用的调试信息,或在程序代码之外

    配置 使用 Nucleo L476RG 使用 GNU ARM Eclipse 我从 STM32CubeMX 生成了一个极简代码 我已经在我的板载 ST Link 中刷新了 J link 驱动程序 一直在尝试为我的代码运行调试器 但我的程序计
  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • 139-基于stm32单片机老人居家监护报警系统Proteus仿真+源程序

    资料编号 139 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 MQ4传感器 电位器模拟 MQ2传感器 电位器模拟 蜂鸣器 电机 制作一个基于stm32单片机老人居家监护报警系统Proteus仿真 2 通过MQ2传
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • 137-基于stm32单片机智能保温杯控制装置Proteus仿真+源程序

    资料编号 137 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DS18B20传感器 电机 制作一个基于stm32单片机智能保温杯控制装置Proteus仿真 2 通过DS18b20传感器检测当前保温杯水的温度 并且
  • 135-基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真+源程序

    资料编号 135 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 电机 超声波传感器 制作一个基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真 2 通过DHT11传感器检测当前
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

    HAL库STM32常用外设教程 二 GPIO输入 输出 文章目录 HAL库STM32常用外设教程 二 GPIO输入 输出 前言 一 GPIO功能概述 二 GPIO的HAl库驱动 三 GPIO使用示例 1 示例功能 四 代码讲解 五 总结
  • 匹配 STM32F0 和 zlib 中的 CRC32

    我正在研究运行 Linux 的计算机和 STM32F0 之间的通信链路 我想对我的数据包使用某种错误检测 并且由于 STM32F0 有 CRC32 硬件 并且我在 Linux 上有带有 CRC32 的 zlib 所以我认为在我的项目中使用
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015
  • STM32F4 定时器 - 计算周期和预分频,以生成 1 ms 延迟

    我在用STM32F407VGT6 with CubeMX 因此 我从通用定时器开始 但我被预分频值和周期值所困扰 基本上我想每隔一段时间生成一个定时器中断n 其中 n 1 2 3 ms 并执行一些任务 计算周期和预分频值的公式有很多变化 公

随机推荐

  • element-plus中的ElMessage消息提示 执行了但是没有弹出提示

    报错原因及解决 引入了element plus 并没有引入css文件 所以导致了样式的缺失 只需要在main js文件中添加如下语句即可 import element plus dist index css 如果还是没有效果记得重启一下项目
  • 黑客学习笔记(自学)

    一 首先 什么是黑客 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手 现阶段黑客所需要掌握的远远不止这些 二 为什么要学习黑客技术 其实 网络信息空间安全已经成为海陆空之外的第四大战场 除了国与国之间的博弈 国内企业与企业间也有显著的明争暗
  • 如何快速准备大厂秋招面试中的算法

    如何快速准备大厂秋招面试中的算法 数据结构 1 栈 1 1 栈的概述 1 2 栈的常规操作 1 3 用js封装栈 1 4 栈的应用 2 队列 2 1 队列的概述 2 2 队列的常规操作 2 3 用js封装队列 2 4 队列的应用 3 链表
  • FreeRTOS学习笔记6(任务通知)

    1 任务通知函数及其知识点的介绍 下面是任务通知得一些特点 1 我们使用队列 信号量 事件组等等方法时 并不知道对方是谁 使用任务通知时 可以明确指定 通 知哪个任务 2 使用任务通知时 任务结构体TCB中就包含了内部对象 可以直接接收别人
  • MacbookPro安装前端开发环境的爬坑之旅

    文章目录 前言 一 MacbookPro的系统认知 二 强大的触控板 16种姿势带你飞 1 熟悉触控板 2 熟悉怎样下载APP 3 开始前端环境的搭建 总结 前言 2021年1月26日 一个前端开发小菜鸟拿到人生第一台MacbookPro的
  • 4.2 类

    类 类声明 类体 变量 成员变量 实例变量和类变量 局部变量 方法里面声明的变量 4 2 1类声明 类声明 class 类名 public class People 公共类 public class People String name i
  • Java .io_java IO

    java IO 主要内容 java io File类的使用 IO原理及流的分类 文件流 FileInputStream FileOutputStream FileReader FileWriter 缓冲流 BufferedInputStre
  • Linux十大常用命令

    1 gt 查看文件信息 ls ls是英文单词list的简写 其功能为列出目录的内容 是用户最常用的命令之一 它类似于DOS下的dir命令 Linux文件或者目录名称最长可以有265个字符 代表当前目录 代表上一级目录 以 开头的文件为隐藏文
  • 机器视觉之医学诊断应用

    https www toutiao com a6668252530897584644 随着药品和医疗器械安全性问题重要性的不断提升 越来越多的生产厂商将机器视觉技术引入实际生产中来 以达到提高生产效率 加强产品质量保障的目的 同样 在医疗系
  • Windows环境安装redis-dump

    安装msys2 x86 64 20190524 exe http repo msys2 org distrib x86 64 msys2 x86 64 20190524 exe rubyinstaller devkit 2 7 1 1 x6
  • CSS样式修改的一些技巧

    感觉自己对页面太差了 很多小问题不了解 是时候加强一下这方面 把最近一个小需求 总结一下 自己也欠了好多学习博客补一下 另外这个博客是来自于自己平时学习的总结和看法 基本是原创或者自己看到一些结合了自己的理解 已经有了一些文章 借用了 我的
  • 重启c语言—两个有序链表序列的交集

    7 1 两个有序链表序列的交集 20分 已知两个非降序链表序列S1与S2 设计函数构造出S1与S2的交集新链表S3 输入格式 输入分两行 分别在每行给出由若干个正整数构成的非降序序列 用 1表示序列的结尾 1不属于这个序列 数字用空格间隔
  • 华为OD机试 - 选修课(Java & JS & Python)

    题目描述 给定一个元素类型为小写字符串的数组 请计算两个没有相同字符的元素长度乘积的最大值 如果没有符合条件的两个元素 返回0 输入描述 第一行为第一门选修课学生的成绩 第二行为第二门选修课学生的成绩 每行数据中学生之间以英文分号分隔 每个
  • 汇编笔记

    更新于20190929 1 Intel和AT T汇编 参数是反的 AT T寄存器前加 常量前加 Intel mov rax rcx rcx gt rax mov cl 2 对应AT T movq rcx rax rcx gt rax mov
  • RHEL/centos8.0离线安装n卡驱动,cuda10.1,cudnn7.5,anaconda3,pycharm以及mmdeection和simpledet的搭建

    我最近在两台RHEL8 0的服务器装了这些玩意 特此记录一下 1 离线安装nvidia driver cuda10 1 cudnn7 5 关键因素 显卡型号 Quadro P4000 系统 RHEL 8 0 用 cat etc redhat
  • IPv4与ipv6联系

    IPv4又称互联网通信协议第四版 是网际协议开发过程中的第四个修订版本 也是此协议第一个被广泛部署的版本 但是2019年11月26日 全球所有43亿个IPv4地址已分配完毕 IPV6是互联网工程任务组设计的用于替代IPv4的下一代IP协议
  • Java高级程序设计_JAVA高级程序设计

    恢复内容开始 import java awt import java awt event ActionEvent import java awt event ActionListener import java awt event Mous
  • 12个C语言必背实例

    C语言实例第01期 十进制数转换二进制数 实例代码 include stdio h int main int m n k 定义变量 int a 16 0 printf 请输入一个0 32767之间的数字 n scanf d n printf
  • ImageNet零样本准确率首次超过80%,地表最强开源CLIP模型更新

    关注公众号 发现CV技术之美 本文转自新智元 编辑LRS 开源模型OpenCLIP达成ImageNet里程碑成就 虽然ImageNet早已完成历史使命 但其在计算机视觉领域仍然是一个关键的数据集 2016年 在ImageNet上训练后的分类
  • STM32--STM32CubeMX的Timer3定时1ms功能HAL库操作

    一 STM32CubeMX的设置 时钟源的选择 Crystal Ceramic Resonator 调试方法选择 Serial Wire 时钟输入为40MHz Timer3的参数设置 使能Timer3的中断 点击 Generate Code