你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
怎样在定时器运行中改变定时时间
[复制链接]
xinnian-400985
提问时间:2013-7-10 17:28 /
定时器初始化后,就确定了其定时周期,在应用中,想在定时器运行时改变定时时间,即要某个PGIO口输出一个脉宽信号,随着时间的变化,这个脉宽信号的周期也在变化。怎样实现?
请指点,谢谢!
赞
1
收藏
0
评论
6
分享
发布时间:2013-7-10 17:28
举报
请先
登录
后回复
6个回答
王zheng
回答时间:2013-7-23 20:18:34
a0a.1 0b0c
RE:怎样在定时器运行中改变定时时间
TIM_TimeBaseStructure.TIM_Period = 0xffff; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 ///此处是重点,设定重的时间长度
//TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_Prescaler =72-1; //设置用来作为TIMx时钟频率除数的预分频值 不分频
//TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式,TIM_CounterMode_DownTIM向下计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
只需改变0xffff,即可,即把0xffff设置为变量
赞
0
评论
回复
支持
反对
人生之际
回答时间:2013-7-23 20:44:32
a0a.1 0b0c
RE:怎样在定时器运行中改变定时时间
可参考ST库例子程序里面\tim\octrigger\(好像是记不清了),使用一个定时器,同时输出四种不同频率的脉冲。
实际上是在某个捕捉通道触发比较值后(此时管脚已经翻转),在中断里修改这个通道的CCR值,以决定下一次比较值触发管脚翻转的时间间隔。
赞
0
评论
回复
支持
反对
xinnian-400985
回答时间:2013-7-25 08:59:54
a0a.1 0b0c
回复:怎样在定时器运行中改变定时时间
回复第 2 楼 于2013-07-23 20:18:34发表:
TIM_TimeBaseStructure.TIM_Period = 0xffff; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 ///此处是重点,设定重的时间长度
//TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_Prescaler =72-1; //设置用来作为TIMx时钟频率除数的预分频值 不分频
//TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式,TIM_CounterMode_DownTIM向下计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
只需改变0xffff,即可,即把0xffff设置为变量
意思是每次要改变TIM_TimeBaseStructure.TIM_Period的值,都要初始化定时器,TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
当然可以在定时器中断服务里完成,是这样吗?
谢谢!
赞
0
评论
回复
支持
反对
xinnian-400985
回答时间:2013-7-25 09:02:19
a0a.1 0b0c
回复:怎样在定时器运行中改变定时时间
回复第 3 楼 于2013-07-23 20:44:32发表:
可参考ST库例子程序里面\tim\octrigger\(好像是记不清了),使用一个定时器,同时输出四种不同频率的脉冲。
实际上是在某个捕捉通道触发比较值后(此时管脚已经翻转),在中断里修改这个通道的CCR值,以决定下一次比较值触发管脚翻转的时间间隔。
谢谢人生之际,我参考下这个例子。
赞
0
评论
回复
支持
反对
bfl111
回答时间:2016-6-12 15:41:52
a0a.1 0b0c
楼主问题解决了吗?怎么解决的?可以告诉我一下吗?
赞
0
评论
回复
支持
反对
黯之醉
回答时间:2017-2-23 11:35:06
a0a.1 0b0c
楼主问题解决了吗?怎么解决的,能告诉一下我吗?我的QQ623429749邮箱是QQ邮箱,谢谢
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:怎样在定时器运行中改变定时时间
//TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_Prescaler =72-1; //设置用来作为TIMx时钟频率除数的预分频值 不分频
//TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式,TIM_CounterMode_DownTIM向下计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
只需改变0xffff,即可,即把0xffff设置为变量
RE:怎样在定时器运行中改变定时时间
实际上是在某个捕捉通道触发比较值后(此时管脚已经翻转),在中断里修改这个通道的CCR值,以决定下一次比较值触发管脚翻转的时间间隔。
回复:怎样在定时器运行中改变定时时间
TIM_TimeBaseStructure.TIM_Period = 0xffff; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 ///此处是重点,设定重的时间长度
//TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_Prescaler =72-1; //设置用来作为TIMx时钟频率除数的预分频值 不分频
//TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式,TIM_CounterMode_DownTIM向下计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
只需改变0xffff,即可,即把0xffff设置为变量
意思是每次要改变TIM_TimeBaseStructure.TIM_Period的值,都要初始化定时器,TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
当然可以在定时器中断服务里完成,是这样吗?
谢谢!
回复:怎样在定时器运行中改变定时时间
可参考ST库例子程序里面\tim\octrigger\(好像是记不清了),使用一个定时器,同时输出四种不同频率的脉冲。
实际上是在某个捕捉通道触发比较值后(此时管脚已经翻转),在中断里修改这个通道的CCR值,以决定下一次比较值触发管脚翻转的时间间隔。
谢谢人生之际,我参考下这个例子。