首页 > 其他分享 >STM32开发————定时器的基本配置

STM32开发————定时器的基本配置

时间:2024-10-16 09:17:30浏览次数:3  
标签:TIM2 NVIC 定时器 配置 count STM32 TIM BaseInitStructure

一、将定时器相关的.c和.h添加到新建的工程中

添加文件路径:

二、对.c和.h文件进行代码编写

打开timer.h文件,写一下防止重复包含的宏定义

#ifndef __TIMER_H
#define __TIMER_H


#endif

打开timer.c文件,包含一下STM32的头文件:

“右键单机”--->Insert '#include file'--->stm32f10x.h //Device header

编写函数框架


void Timer_Init(void)
{
    //定时器相关的库函数声明在stm32f10x_tim.h文件内
    //打开总线时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

    //让控制器选择RCC时钟,使用内部RCC时钟源
	TIM_InternalClockConfig(TIM2);

    //初始化定时器的时基单元相关参数
	TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
	TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;		//时钟分割,是时钟源滤波相关
	TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;		//计数器的模式,有向上对齐、向下对齐、中央对齐计数模式
	TIM_BaseInitStructure.TIM_Period = 50000-1;			//自动重装载值	取值范围0~65535
	TIM_BaseInitStructure.TIM_Prescaler = 7200-1;		//预分频			取值范围0~65535
	TIM_BaseInitStructure.TIM_RepetitionCounter = 0;	//高级定时器
	
    //初始化定时器的时基单元相关参数所用的函数TIM_TimeBaseInit
	TIM_TimeBaseInit(TIM2,&TIM_BaseInitStructure);
	
    //以上配置开中断之后会立即进入一次中断,如果不想这样需要我们清除一下中断标志位
	TIM_ClearFlag(TIM2,TIM_FLAG_Update);

    //开启中断
	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

    /*
     *开启中断只是将中断输入进内核,因为内核内部中断都是有NVIC控制,所以还需要配置NVIC
     *NVIC分组设置是对所有中断有效的,也就是整个工程只能配置一次
     *设置优先级分组
     */
	//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    //NVIC是内核外设,STM32把库函数放到了MISC文件内,打开misc.h拉到最后就可以找到相关库函数声明
	//
    NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;		//中断通道选择	后缀选择看图
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;		//控制通道是否开启
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;		//抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;				//响应优先级

    //初始化NVIC
	NVIC_Init(&NVIC_InitStructure);

    //开启定时器
	TIM_Cmd(TIM2,ENABLE);
}

/*
 *中断入口函数名在startup这个启动文件中有定义,不能随便写
 */
void TIM2_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM2,TIM_IT_Update) == SET)//判断挂起标志位
	{
        //手动清除标志位
		TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
		count=0;
		if(count==0)
		{
			OLED_ShowString(posName[count], 0, dispName[count], 16);
			OLED_ShowString(posVal[count], 0, dispVal[count], 16);
			OLED_ShowString(posName[count+1], 2, dispName[count+1], 16);
			OLED_ShowString(posVal[count+1], 2, dispVal[count+1], 16);
		}
	}
	
	TIM_Cmd(TIM2,DISABLE);
	
}

将函数声明添加到timer.h文件

标签:TIM2,NVIC,定时器,配置,count,STM32,TIM,BaseInitStructure
From: https://blog.csdn.net/ciweic/article/details/142935971

相关文章

  • Idea-Maven的Setting文件盘配置
    目录1.Setting.xml2.Setting.xml选其中之一就行。直接全部复制就行。1.Setting.xml<?xmlversion="1.0"encoding="UTF-8"?><!--LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTI......
  • Krita配置comfyui,ai绘图 记录
     comfyui使用b站up、赛博佛祖秋葉aaaki的整合包。此地址下载ai插件https://github.com/Acly/krita-ai-diffusionkrita中安装下载好的插件,从文件导入python插件打开ai绘图面板:缺失节点使用复制链接地址然后,在复制的地址后加上.git后使用comfyUImanager通过gitURL安装......
  • Java中Log4j的配置与使用详细解析
    Log4jLog4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修......
  • ETAS ISOLAR-A/B配置CAN协议栈
    ETAS参考博世是研发需求为AUTOSAR平台提供了工具链,受到不是主机厂和Tire1的追捧,进行快速的平台开发和移植,本文一起分享BSW-CAN协议栈开发。1导入DBC解析CAN协议栈在IsolarA/B新建工程后,完成dbc和arxml的导入,系统上层的SWC和基本类型都有了,需要对工程BSW进行配置1.1OSOS......
  • Modbus TCP 西门子PLC指令以太口地址配置以及 Poll Slave调试软件地址配置
    1前言本篇文章讲了 ModbusTCP通讯中的一些以太网端口配置和遇到的一些问题,都是肝货自己测试的QAQ。2西门子SERVER指令该指令是让外界设备主动连接此PLC被动连接,所以这里应该填 外界设备的IP地址。这边我因为是电脑的Modbus Poll主机来进行通讯的所以填的是电脑......
  • DolphinScheduler快速上手:基于Docker Compose的安装与配置全攻略
    DolphinScheduler是一款强大的开源分布式任务调度系统,广泛应用于大数据领域,用于管理复杂的工作流。本文将详细介绍如何通过DockerCompose安装和配置DolphinScheduler,以便快速搭建并使用这一系统。1.环境准备首先,确保你的系统已经安装了Docker和DockerCompose。Docker......
  • OpenGL学习01-环境配置-实测好用
    首先下载VisualStudio2022,配置环境,安装库等开发环境:VisualStudio2022语言:C++freeglut库glfw 库以上两个库用于窗口管理glew库glad库以上两个库帮助我们链接到openGL比较新的实现方法相同功能库可以二选一VisualStudio2022安装教程参考可以这个VisualSt......
  • vue vue-router 项目自动化之-路由自动生成,解放手动配置
    在vue前端项目开发中,路由与创建文件是完全不相关的两个动作,一般情况下我们都是先把创建好文件,然后到指定的路由配置文件中进行对路由的配置但是观察下来,你会发现配置路由这一块会有些许眼熟,正是与我们文件路径重合啦有一个大胆的想法,就是直接使用我们的文件路径当做路由,便可......
  • 课程6 :配置和管理传输服务(重要文档)
    课程6:配置和管理传输服务(重要文档)传输服务:          邮件的传输               发送:Exchange默认是不能向Internet发送邮件:需要更改发送连接器才可以向Internet发送邮件(新建发送连接器)            ......
  • 单片机设计基于STM32安全通风控制系统设计
    **文章目录前言概要功能设计设计思路软件设计效果图程序文章目录前言......