通用定时器预分频问题

问题描述

通用定时器预分频问题

MCU是stm32f103zet6,采用TIM2,向上计数器模式,外部晶振8MHZ,RCC APB1=36MHZ,预分频:36000-1,目标是想得到在计数时,计数器每增加一,耗时是1ms
但是怎么都实现不了,时间增加0.1us,计数器增加一个远远大于1的不确定值。
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;

/* RCC system reset(for debug purpose) */
RCC_DeInit();

/* Enable HSE */
RCC_HSEConfig(RCC_HSE_ON);

/* Wait till HSE is ready */
HSEStartUpStatus = RCC_WaitForHSEStartUp();

if (HSEStartUpStatus == SUCCESS)
{
/* Enable Prefetch Buffer */
//FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

/* Flash 2 wait state */
//FLASH_SetLatency(FLASH_Latency_2);

/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1); 

/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1); 

/* PCLK1 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);

/* PLLCLK = 8MHz * 9 = 72 MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

/* Enable PLL */
RCC_PLLCmd(ENABLE);

/* Wait till PLL is ready */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}

/* Select PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

/* Wait till PLL is used as system clock source */
while(RCC_GetSYSCLKSource() != 0x08) {}

}

/* Enable GPIOC clock */
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

/* Enable TIM2 clock */
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

}
void Timer_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* Enable TIM2 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
TIM_InternalClockConfig(TIM2);

TIM_TimeBaseStructure.TIM_Period=40000;
TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2,TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

TIM_ClearFlag(TIM2, TIM_FLAG_Update);
//TIM_ARRPreloadConfig(TIM2, DISABLE); //????????????????????
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2,ENABLE);

}

解决方案

0.1uS 你怎么测的呢?
如果我做,大概会每次定时中断反转一个I/O,然后用示波器看波形时间,调整计数分频

时间: 2024-08-04 06:07:21

通用定时器预分频问题的相关文章

stm32之通用定时器TIM

STM32系列的CPU,有多达8个定时器: 1.其中TMI1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动:它们的时钟有APB2的输出产生: 2.其它6个为普通定时器,时钟由APB1的输出产生: 定时器的作用: 1.定时功能 2.计数功能 3.输入捕获 4.匹配输出 5.PWM脉冲波输出 概述: 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成.它适用于多种场合,包括测量输入信号的脉冲长度(输入采集)或者产生输出波形(输出比较和PWM). 定时器是完全独

stm32 定时器-STM32定时器1控制电机输出两路PWM波形问题

问题描述 STM32定时器1控制电机输出两路PWM波形问题 本人刚学stm32,用定时器1的CH1和CH2输出pwm波形是不知道为什么没有高电平输出,电机根本不转求大家看看 #include "include.h" /* 硬件连接: (PE9->EN1---TIME1_CH1 右) (PE11->EN2---TIME1_CH2 左) PA4->INT4 PA5->INT3 PA6->INT2 PA7->INT1 */ /*0011 1010---&g

基于ARM-contexA9-蜂鸣器pwm驱动开发

上次,我们写过一个蜂鸣器叫的程序,但是那个程序仅仅只是驱动蜂鸣器,用电平1和0来驱动而已,跟驱动LED其实没什么两样.我们先来回顾一下蜂鸣器的硬件还有相关的寄存器吧: 还是和以前一样的步骤: 1.看电路图      (1)蜂鸣器接口位于电路板的底板,看电路图可知道是高电平有效.        (2)相对应的找到核心板的接口.由此可知,我们的蜂鸣器是GPD0_0   接下来找数据手册,找到对应的寄存器,然后配置它就可以了.   2.查数据手册,找到相关的寄存器,并配置 (1)找到GPD0CON,地

stm32之PWM

PWM是pulse width modulation的缩写,即脉冲宽度调制.其通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形: 1.PWM是一种对模拟信号电平进行数字编码的方法.通过高分辨率计数器的使用,方波的占空比被调制,用来对一个具体模拟信号的电平进行编码.等效的实现是基于采样定理中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.冲量即指窄脉冲的面接.这里所说的效果基本相同,是指该环节的输出响应波形基本相同. 2.如把各输出波形用傅立叶分析,则它们的

stm32之RCC

stm32时钟系统的意义: 1.电源的开关作用,达到低功耗效果: 2.调节时钟的速度: 对于每个外设,都要设置设置,stm32的时钟系统为了更低功耗: STM32时钟系统框图分析: 时钟源: 时钟是STM32的脉搏,是驱动源.使用任何一个外设都必须打开相应的时钟.这样的好处就是,如果不是用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果: stm32的时钟可以有以下4个时钟源提供: 1.HSI:高速内部时钟信号stm32单片机内带的时钟(8M频率),缺点是精度

stm32之watchdog

在嵌入式系统中,由于MCU的工作常常受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发送不可预料的后果,所以出于对单片机运行状态实时监测的考虑,便产生了一种专门用于检测程序运行状态的模块,俗称"看门狗(watchdog)": 在系统运行以后就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位.所以在使用看门狗的时候

《嵌入式Linux开发实用教程》——4.2 字符设备驱动

4.2 字符设备驱动 Linux操作系统将所有的设备都会看成是文件,因此当我们需要访问设备时,都是通过操作文件的方式进行访问.对字符设备的读写是以字节为单位进行的. 对字符设备驱动程序的学习过程,主要以两个具有代表性且在OK6410开发平台可实践性的字符驱动展开分析,分别为LED驱动程序.ADC驱动程序. 4.2.1 LED驱动程序设计 为了展现LED的裸板程序和基于Linux系统的LED驱动程序的区别与减少难度梯度,在写LED驱动程序之前很有必要先看一下LED的裸板程序是怎样设计的. 1.LE

node.js笔记

第一章 用户在浏览器中输入 www.taobao.com 直到看到页面之间发生了什么?(浏览器的加载.解析.渲染过程)① 操作系统(windows)访问网络上DNS服务器,把域名转换为IP地址    DNS [www.taobao.com 60.28.242.250]② 浏览器向Web服务器发起HTTP请求③ web服务器接收并解析请求消息,查找指定资源,可能访问数据库,构建并返回http响应消息④ 浏览器接收并解析响应消息,发送请求获取嵌入在HTML中的资源(如图片.CSS.JS.视频.音频等

Linux下的Backlight子系统(一)【转】

转自:http://blog.csdn.net/weiqing1981127/article/details/8511676 版权所有,转载必须说明转自 http://my.csdn.net/weiqing1981127  原创作者:南京邮电大学  通信与信息系统专业 研二 魏清 一.Backlight背光子系统概述 我们的LCD屏常常需要一个背光,调节LCD屏背光的亮度,这里所说的背光不是仅仅亮和不亮两种,而是根据用户的需求,背光亮度是可以任意调节.Linux内核中有一个backlight背光