基于STM32的DMA&Usart_TIM_ADC功能

使用的开发板正点原子精英版STM32F103ZET6,串口调试助手,MQ-2模块,PA-5

1主要模块

STM32 定时器

定时器介绍

16位向上、向下、向上/向下自动装载计数器
● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意
数值
● 4个独立通道:
─ 输入捕获
─ 输出比较
─ PWM生成(边缘或中间对齐模式)
─ 单脉冲模式输出
● 使用外部信号控制定时器和定时器互连的同步电路
● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
─ 输入捕获
─ 输出比较
● 支持针对定位的增量(正交)编码器和霍尔传感器电路
● 触发输入作为外部时钟或者按周期的电流管理

定时器的时基单元主要有三个寄存器组成:16位计数器,自动重转载寄存器(包括一个影子寄存器),预分频器(控制计数器时钟),其中预分频计数器的时钟频率1——65535。由下面的图片可以看出预分频器对计数器值的控制。当计数器变化1的分频器系数不同导致的差别。
在这里插入图片描述在这里插入图片描述

计数器模式:计数器主要模式为:向上,向下,中央对齐模式三种。计数器可以通过溢出触发更新,也可以设置TIM_ERG设置产生更新事件。同时也可以设置TIMx_CR1寄存器中的UDIS位,禁止事件更新。值得注意的是发生更新后所有的寄存器都会更新。我们在使用定时器高级功能时注意一些寄存器的标志位的灵活应用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时钟源:
1:内部时钟(CK_INT)
2:外部时钟模式1:外部输入脚外部时钟模式2:外部触发输入 。
3:内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器器Timer1而作为另一个定时器Timer2的预分频器。

定时器代码

//代码这么优美相信不需要注释,如果有问题就查查固件库吧。
#include "TIM.h"

uint16_t TIM_Value;

void TIM_Init()
{
   	
		TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStruct;
		NVIC_InitTypeDef	NVIC_InitStructure;
	
		RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
	
		TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
		TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
		TIM_TimeBaseInitStruct.TIM_Period=Auto_Counter;
		TIM_TimeBaseInitStruct.TIM_Prescaler=Div_Fre;
	
		TIM_TimeBaseInit(TIM,&TIM_TimeBaseInitStruct);
	
		NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;
		NVIC_InitStructure.NVIC_IRQChannelCmd=EN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值