历史上的今天
今天是:2025年04月30日(星期三)
2021年04月30日 | STM32学习记录 通用定时器TIM
2021-04-30 来源:eefocus
经过两天的研究,逛各种坛子,不断测试,
发现网上很多代码实际上都只有两三个版本,但是都不工作或者说不正常工作。。。
东拼西凑,不断调试,终于找出了通用定时器的可以工作的配置。
时钟配置不是问题,问题在于TIM的初始化。网上各种资料都不正确。
导至定时器一直只以一个频率工作,而且按资料来说正确范围内的参数实际却不工作。
时钟配置
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel; /*TIM3中断*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*先占优先级0级*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; /*从优先级3级*/
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /*IRQ通道被使能*/
NVIC_Init(&NVIC_InitStructure);
TIM初始化设置
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /* 时钟使能 */
/*定时器TIM3初始化*/
TIM_TimeBaseStructure.TIM_Period = 7200;/*周期的值*/
TIM_TimeBaseStructure.TIM_Prescaler = 10000;/* 预分频值 */
//跟据程序实际CNT的取值看,应该TIM_Period才是预分频值
//虽然资料说这两个取值在0x0000~0xFFFF,但是好像取值超过一定值就不工作,具体是多少没测,但是很多数值都不工作。
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/*设置时钟分割:TDTS = Tck_tim*/
//这里与资料上也不相同,好像设任何值(1,2,4)都不影响计步速度。
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /* TIM向上计数模式*/
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /*根据指定的参数初始化TIMx的时间基数单位*/
TIM_PrescalerConfig(TIM3, 7200-1, TIM_PSCReloadMode_Immediate);
//如果不加这句,定时器会以200次/秒 左右的周期溢出,不论前面周期,预分频和时钟如何设置。
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); /*使能指定的TIM3中断,允许更新中断*/
中断配置
if(TIM_GetITStatus(TIM3, TIM_IT_Update) !=RESET)
{
TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);
/*处理事件。。。*/
}
下一篇:STM32库开发和流水灯
史海拾趣
|
智能电表具有实时查询用电量、欠费报警、远程交费、家中发电可计费等多项功能。 昨日上午,国家电网四川省电力公司与成都市签订《关于2010—2012年加快推动成都坚强智能电网工程建设战略合作协议》。《协议》规划,从今年开始成都将加快“一户 ...… 查看全部问答> |
|
最近买了个ULINK 2(哈哈,不用说都是破解版),打开一看原来是手工焊接的?不管那么多了,先调试一下试试。 调试速度感觉比JLINK要好,不会导致这个软件窗口乱闪,而且导入的速度也比较快,JLINK调试时,出现界面很混乱。 但 ...… 查看全部问答> |
|
通讯调试工具1.22(支持串口,DNW,socket,telnet,ping,tftp等) [url=http://bbs.21ic.com/icview-151653-1-1.html][/url] 多合一调试工具… 查看全部问答> |
|
我刚刚开始学习编写驱动程序。 安装了Driverstudio之后在Driverworks中编译库文件,在IA64下编译的时候老是提示有如下问题: D:\\Program Files\\Compuware\\DriverStudio\\DriverWorks\\include\\dep_wdm\\hidport.h(6) : fatal error C1189: #e ...… 查看全部问答> |
|
写了下面一段程序,想看看两个变量的值,插进两个messagebox(),为什么第二MesaageBox()不执行?而在vc中可以显示两个对话框。编译没有错误。请各位指教! int nIndex1 =m_kanghun.GetCurSe ...… 查看全部问答> |
|
求大虾帮助啊,急急急啊,调了3天了,STM32串口通讯实现简单的计算功能,还是调不出,我的配置都正确了,下面是我的it.c里的中断服务函数 #include \"stm32f10x_it.h\" #include\"stdio.h\" #include \"string.h\" static int j=0; ...… 查看全部问答> |




