今天讲解STM32F103定时器定时-中断功能,在昨天定时器延时的软件工程上添加TIM3定时的功能,你们也可以试着将昨天的工程添加修改得到。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/cPnJ9KYcXbPsP 访问密码 acd8
工程现象:间隔(定时器定时)500ms LED变化一次, 并且串口打印
STM32F103ZE有8个定时器(TIM1 – TIM8), 改工程以TIM3定时为例。
STM32F10x的资料可以在我360云盘下载:
https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90
关于TIM延时,我把重要的几点在下面分别讲述,工程中没有在这里讲述的都是之前就有的,重点讲述的是主题相关的内容。若不明白,请关注微信公众号“EmbeddDeveloper”查阅或留言。
现将重点讲述关于TIM定时的几点内容。
一、定时器时钟
这里的“时钟配置”函数在bsp.c文件下面;
使能时钟:RCC_APB1Periph_TIM3。
二、定时器配置
函数在timer.c文件下面;
详见每一句后面都有注释。
三、定时函数
函数在timer.c文件下面;
主要是定时ON 和OFF函数,至于为什么是定时ms,这里请参考昨天的讲解。
大致意思:TIM每秒计数1M次(系统时钟72M, 72分频),计数满1000次一个周期,也就是1usX 1000 = 1ms
见timer.h里面的宏定义:TIM3_COUNTER_CLOCK、TIM3_PRESCALER_VALUE、TIM3_PERIOD_TIMING
由这几个宏定义决定延时时间。
四、NVIC配置
函数在bsp.c文件下面;
今天的软件工程使用了中断,因此添加NVIC配置.
五、TIM3中断函数
函数在stm32f10x_it.c文件下面;
主要是处理TIM3定时器中断。
六、主函数应用
函数在main.c文件下面;
(定时器)定时500ms跳变LED、打印(发送)字符串。
上面“gTIMTiming_Nms_FlagOver”标志在第五点。
关键字:STM32 TIM定时 中断
引用地址:
STM32_TIM定时- 中断
推荐阅读最新更新时间:2024-11-05 12:33
stm32专题十一:USART(五)USART发送命令解析
通过串口,用电脑发数据给单片机来控制单片机实现相应的功能,能够实现简单的人机交互。 很简单,通过getchar()接收,然后switch...case...来实现不同的功能。值得注意的是,串口发送接收的均为字符。 #include stm32f10x.h #include bsp_led.h #include bsp_usart.h #include stdio.h void delay(uint32_t count); int main(void) { uint8_t ch; USART_config(); LED_GPIO_Config(); printf( 串口发送数据
[单片机]
STM32 串口采用DMA方式接收数据
环境: 主机:WINXP 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 串口可以配置成用DMA的方式接收数据,不过DMA需要定长才能产生接收中断,如何接收可变长度的数据呢? 方法有以下3种: 1.将RX脚与一路时钟外部引脚相连,当串口一帧发完,即可利用此定时器产生超时中断.这个实时性较高,可以做到1个字节实时监测. 2.不改变硬件,开启一个定时器监控DMA接收,如果超时则产生中断.这个实时性不高,因为超时时间必须要大于需要接收帧的时间,精度不好控制. 3.STM32单片机有的串口可以监测总线是否处于空闲,如果空闲则产生中断.可以用它来监测DMA接收是否完毕.这种方式实时性很高. 本文采用第3种方式.在波
[单片机]
STM32之通用定时器计数器模式
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config() { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /
[单片机]
stm32的定时器使用方法
STM32学习笔记(六)----TIM (待补充) 1、使能TIM时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM*,ENABLE); 2、基础设置 TIM_TimeBaseStructure.TIM_Period 计数值 TIM_TimeBaseStructure.TIM_Prescaler 预分频,此值+1为分频的除数 TIM_TimeBaseStructure.TIM_ClockDivision = 0 时钟因子 待做进一步说明 TI
[单片机]
STM32 GPIO寄存器的相关知识
一、前言 在之前的STM32的GPIO理论基础知识中,分别对基本结构和工作模式进行了详细的介绍。 GPIO基本结构中主要对GPIO内部的各个功能电路逐一的进行的分析; GPIO工作模式中主要介绍GPIO应用在不同的使用场景下,GPIO端口的静态特征配置和动态的工作模式,同时对信号的工作流进行了分析。 这一篇主要对GPIO模块使用到的寄存器进行详细的分析介绍,适当了解GPIO寄存器的相关知识,可以对GPIO最底层的一些配置和工作原理有更好的认识,有助于加深对GPIO基本结构及工作模式的理解,同时对后续介绍到的GPIO在应用设计中有较好的帮助。 二、寄存器概述 图1为STM32的GPIO模块中寄存器的概述,总共有5种类型的寄存
[单片机]
S3C2440中的异常与中断
1、异常与中断的简单介绍与实现 S3C2440中一共有7种模式(如图1),其中异常模式有svc(管理模式)、abt(中止模式)、und(未定义指令模式)、irq(中断模式)和 fiq(快中断模式)5种,中止模式又分为指令预取中止和数据访问中止;usr(用户模式)不可直接切换到其他模式,而其他6种模式都可以通过修改CPSR 与其他模式进行切换(参考图3和图4)。 之所以会有这么多的异常模式是为了能更好地处理程序遇到的各种异常,在ARM状态下(S3C2440的CPU有ARM状态和THUMB状态之分)这些异常模式的差别如图2所示。在supervisor、abortt、iqr和undefine中,R0-R12 和 CPSR是通用的寄存器,
[单片机]
STM32F249按键中断控制LED+USART中断控制LED
首先,这节用移植会比较快 USART中断控制LED我很早就已经解决了,这个是在我第二版本的基础上,将按键变成了中断,就这么简单,话不多说,开始 1.需要移植的文件首先是bsp_exti.c /** ****************************************************************************** * @file bsp_exti.c * @author fire * @version V1.0 * @date 2015-xx-xx * @brief I/O线中断应用bsp ***********************************
[单片机]
STM32的SPI采用DMA方式传输测试
环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 参考链接:http://www.openedv.com/posts/list/3159.htm SPI传输数据分为连续传输和非连续传输. 连续传输时序图: 非连续传输时序图: 非连续传输模式可以参考上篇文章:http://blog.csdn.net/jdh99/article/details/7598573 官方pdf关于连续和非连续传输的说明: 当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE的上升沿(或TXE中断),并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续
[单片机]