你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

没有32位定时器, 想要一个32位定时器,是不是可以级联?.

[复制链接]
sitaijun1107 提问时间:2019-9-24 10:36 /
求助大神, 只要基础定时器, 到了时间产生中断,但是需要32位的。 是不是可以用TIM2触发TIM3,级联定时?

        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //clock

        TIM_TimeBaseStructure.TIM_Period = 4999;        //设置在下一个更新事件装入活动的自动重装载寄存器周期的值      
        TIM_TimeBaseStructure.TIM_Prescaler = 799;               //设置用来作为TIMx时钟频率除数的预分频值
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位


        TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);                   //选择输出模式  主模式选择      这是级联的关键
        TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);           //启动定时器的主从模式

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //clock

        TIM_TimeBaseStructure.TIM_Period = 4999;        //设置在下一个更新事件装入活动的自动重装载寄存器周期的值      
        TIM_TimeBaseStructure.TIM_Prescaler = 79;               //设置用来作为TIMx时钟频率除数的预分频值
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位

        // TIM_SlaveMode_Trigger        // TIM_SlaveMode_External1        // TIM_SlaveMode_Gated
    TIM_SelectSlaveMode (TIM3, TIM_SlaveMode_External1);// 从模式外部触发模式        //外部时钟模式    外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器
        TIM_SelectInputTrigger (TIM3, TIM_TS_ITR1);// 触发选择,ITR1 即 TIM2

//        TIM_ITRxExternalClockConfig(TIM3, TIM_TS_ITR1);

        TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);

        TIM_Cmd(TIM2, ENABLE);
        TIM_Cmd(TIM3, ENABLE);

无法进入中断, 求解决。


收藏 评论10 发布时间:2019-9-24 10:36

举报

10个回答
wenyangzeng 回答时间:2019-9-24 11:41:20
定时器中断里多一个32位变量就够了,中断到来变量加1,

lwg8458 回答时间:2019-9-24 11:12:39
不必32位吧
sitaijun1107 回答时间:2019-9-24 11:40:14

额,有需要,不然也不会要32位的。
sitaijun1107 回答时间:2019-9-24 11:45:48
wenyangzeng 发表于 2019-9-24 11:41
定时器中断里多一个32位变量就够了,中断到来变量加1,

是想要两个计时器, 高16位作为一个值,低16位作为一个值。 不是简单的得到加到32位数。
wenyangzeng 回答时间:2019-9-24 14:23:39
sitaijun1107 发表于 2019-9-24 11:45
是想要两个计时器, 高16位作为一个值,低16位作为一个值。 不是简单的得到加到32位数。 ...

那就再变通一下,设置2个16位变量就得了。
mylovemcu 回答时间:2019-9-24 14:30:33
TIM_SelectSlaveMode (TIM3, TIM_SlaveMode_External1);// 从模式外部触发模式

从模式不应该配置为外部触发   TIM2不是外部触发
应该是触发模式
toofree 回答时间:2019-9-24 17:30:27
定时器级联触发是可以的。

如果要硬件32位定时器吗?可以换个型号 20190924173000.jpg

sitaijun1107 回答时间:2019-9-25 08:45:04
toofree 发表于 2019-9-24 17:30
定时器级联触发是可以的。

如果要硬件32位定时器吗?可以换个型号

换不了型号了,指定了
sitaijun1107 回答时间:2019-9-25 08:45:35
mylovemcu 发表于 2019-9-24 14:30
TIM_SelectSlaveMode (TIM3, TIM_SlaveMode_External1);// 从模式外部触发模式

从模式不应该配置为外部触 ...

TIM_SelectSlaveMode (TIM3, TIM_SlaveMode_Trigger);
使用了这个也没有用
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版