30573|20

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

为什么TIM_ARRPreloadConfig在我的程序中没有作用 他到底有什么作用? [复制链接]

 

我用TIM2定时一秒,可是 不管我将TIM_ARRPreloadConfig设置为DISABLE 还是ENABLE,结果都不变。我都不明白TIM_ARRPreloadConfig有什么作用了;  另外,TIM_TimeBaseStructure.TIM_Prescaler=0还是9我都试过,定时还是一秒;不知道为什么。那位大侠帮忙看看

下面是我的设置:

 

 

 

 

void initTIMER2(void)   //(APB1)

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
 
 //36mhz/36000=1000=TIM_Period

 TIM_DeInit(TIM2);
 //TIM_InternalClockConfig(TIM2);
 TIM_TimeBaseStructure.TIM_Period=2000;   //ARR的值
 TIM_TimeBaseStructure.TIM_Prescaler=0;    // 分频=TIM_Prescaler+1  预分频为1 
 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频
 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
 TIM_PrescalerConfig(TIM2,35999,TIM_PSCReloadMode_Immediate);//时钟分频系数36000-1,所以定时器时钟为2K  预分频值即刻装入
 TIM_ARRPreloadConfig(TIM2,DISABLE);//禁止ARR预装载缓冲器   ??????
 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

 TIM_ClearFlag(TIM2,TIM_FLAG_Update);


 //开启时钟2
 TIM_Cmd(TIM2, ENABLE);

此帖出自stm32/stm8论坛

最新回复

长知识了   详情 回复 发表于 2017-7-22 20:18

点评

TIM2->ARR=??就行了,你给TIM_TimeBaseStructure.TIM_Prescaler赋值要到TIM_PrescalerConfig函数调用时才生效. ARR预装最好使能,否则可能会有意外的情况.  详情 回复 发表于 2013-8-26 13:19
点赞 关注(1)
 

回复
举报

21

帖子

0

TA的资源

一粒金砂(中级)

推荐
 
我也碰到过和你一样的问题,给你说一下我的理解,如果不正确望大家帮忙纠正!
先说TIM_ARRPreloadConfig设置为DISABLE 和ENABLE的问题,他的作用只是允许或禁止在定时器工作时向ARR的缓冲器中写入新值,以便在更新事件发生时载入覆盖以前的值。在开始初始化的时候你已经把" TIM_TimeBaseStructure.TIM_Period=2000;   //ARR的值  ",后来也一直是这个值,原因是你没有编写中断服务函数或者你在中断服务函数中根本就没有给ARR缓冲器重新写入新值,所以设置为DISABLE 和ENABLE都没有影响。
再说一下TIM_TimeBaseStructure.TIM_Prescaler=0还是9的问题,这个很简单,程序后面调用了TIM_PrescalerConfig(TIM2,35999,TIM_PSCReloadMode_Immediate);这个函数把之前的值给修改了,你可以把这个函数注释掉然后再改前面的值,或者直接改后面的那个35999,应该就不一样了。这两个地方都是给PSR寄存器写入值,为什么后面多此一举又专门调用函数你可以问问其他高手,小弟新手也不甚了解。
建议多看几遍数据手册,多修改程序测试。
此帖出自stm32/stm8论坛

点评

原因是你没有编写中断服务函数或者你在中断服务函数中根本就没有给ARR缓冲器重新写入新值,所以设置为DISABLE 和ENABLE都没有影响。这句话不懂  详情 回复 发表于 2013-8-26 11:22
说的 明白 好东西啊  详情 回复 发表于 2012-10-23 22:34

赞赏

1

查看全部赞赏

 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 xiongrui 的帖子

谢谢了 !  说的很明白,我也弄懂了,十分感谢!
此帖出自stm32/stm8论坛
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

4
 
回答很好。
此帖出自stm32/stm8论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

5
 
又增加知识了,多谢啊
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 

回复 沙发 xiongrui 的帖子

说的 明白 好东西啊
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 沙发xiongrui 的帖子

原因是你没有编写中断服务函数或者你在中断服务函数中根本就没有给ARR缓冲器重新写入新值,所以设置为DISABLE 和ENABLE都没有影响。这句话不懂
此帖出自stm32/stm8论坛

点评

只有在中断才能改吗?在中断中修改ARR才能?  详情 回复 发表于 2013-8-26 11:23
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼张永标张标 的帖子

只有在中断才能改吗?在中断中修改ARR才能?
此帖出自stm32/stm8论坛

点评

任何时候都能改,但使能预装载后只在更新时生效  详情 回复 发表于 2013-8-26 13:11
 
 
 

回复

4008

帖子

0

TA的资源

版主

9
 

回复 8楼张永标张标 的帖子

任何时候都能改,但使能预装载后只在更新时生效
此帖出自stm32/stm8论坛

点评

学习了:handshake  详情 回复 发表于 2013-12-4 15:21
 
 
 

回复

4008

帖子

0

TA的资源

版主

10
 

回复 楼主dongencheng 的帖子

TIM2->ARR=??就行了,你给TIM_TimeBaseStructure.TIM_Prescaler赋值要到TIM_PrescalerConfig函数调用时才生效.
ARR预装最好使能,否则可能会有意外的情况.
此帖出自stm32/stm8论坛
 
 
 

回复

2606

帖子

0

TA的资源

五彩晶圆(初级)

11
 
讲得很不错
此帖出自stm32/stm8论坛
 
个人签名工程 = 数学+物理+经济
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

12
 

回复 9楼huo_hu 的帖子

学习了
此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

13
 
说的很明白,谢谢楼主
此帖出自stm32/stm8论坛
 
 
 

回复

51

帖子

2

TA的资源

一粒金砂(中级)

14
 
多谢,新手!
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

15
 
敬重xiongrui助人为乐的精神!讲得很不错
此帖出自stm32/stm8论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

16
 
一直搞不清楚:TIM_ARRPreloadConfig()与TIM_OCxPreloadConfig()这两个函数有什么区别,能否讲解一下
此帖出自stm32/stm8论坛

点评

就是为了避免赋值时刻不对引起的意外情况。  详情 回复 发表于 2017-3-22 11:19
 
 
 

回复

4008

帖子

0

TA的资源

版主

17
 
jpaekeo 发表于 2017-3-22 10:40
一直搞不清楚:TIM_ARRPreloadConfig()与TIM_OCxPreloadConfig()这两个函数有什么区别,能否讲解一下

就是为了避免赋值时刻不对引起的意外情况。
此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

18
 
huo_hu 发表于 2013-8-26 13:11
任何时候都能改,但使能预装载后只在更新时生效

那如果是Disable的话,请问什么时候才会生效呢
此帖出自stm32/stm8论坛

点评

即刻生效,你看看手册吧,手册上有讲  详情 回复 发表于 2017-5-15 12:31
 
 
 

回复

4008

帖子

0

TA的资源

版主

19
 
電氣男 发表于 2017-5-15 11:54
那如果是Disable的话,请问什么时候才会生效呢

即刻生效,你看看手册吧,手册上有讲
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

20
 
各位工程大咖们,方案这块有用到硬件加密芯片,保护软件,防止抄板的,请联系我。QQ:937684930
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表