OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1119|回复: 3

如何实现定时器停止后就重装预置,不是产生中断后。待一下次启动重新定时。

[复制链接]

31

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2013-9-23
在线时间
44 小时
发表于 2023-12-4 10:30:12 | 显示全部楼层 |阅读模式
5金钱
我需要将定时器设置为单次定时模式,内部时钟,设置的定时时间假设是1秒左右。启动定时器后在大约400ms 强制停止计数器,再次启动定时器,发现600ms产生中断。
我希望每次启动,重装预置,都是1S延时时间。(不管是强制停止,还是溢出)
初始化TIM

        TIM16->ARR=9000-1;                                              //预置
        TIM16->PSC=9000-1;                                              //分频
        TIM16->SMCR=0;                                                     //SMS[3:0]=0000, CK_INT   内部时钟
        TIM16->DIER|=1<<0;                                             
        TIM16->CR1&=~(3<<5);                                            //CMS[1:0]=00, 边缘对齐
        TIM16->CR1&=~(1<<4);                                            //DIR=0, 向上计数
        TIM16->CR1 &= ~(1<<7);                                     // 复位预装值
        TIM16->CR1 |= (1<<3);                                        //  单次计数
        TIM16->CR1 |=0x01;                                                   // 使能


每次启动赋值  不管用没有装进出
      TIM16->ARR=9000-1;                                             // 装预置
      TIM16->CR1 |=0x01;                                                   // 使能
似乎没有作用。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2013-9-23
在线时间
44 小时
 楼主| 发表于 2023-12-4 11:02:43 | 显示全部楼层
我的是STM32F030F4 的芯片。   禁止了ARPE 位,TIM16->CR1 &= ~(1<<7);  也没有作用。
回复

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2023-12-4 11:54:51 | 显示全部楼层
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-12-4 11:57:58 | 显示全部楼层
得把计数清零:TIM16->CNT=0;
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表