找回密码
 立即注册
查看: 634|回复: 3

STC软件库函数之定时器“一键”定时任意值

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2025-05-01 08:57:33
已绑定手机

30

主题

111

回帖

1659

积分

荣誉版主

Rbowlystar

积分
1659
发表于 2024-3-21 22:06:40 | 显示全部楼层 |阅读模式
本帖最后由 四汐 于 2024-3-21 22:11 编辑


前两天发现STC原来也有官方的软件库函数,于是今天就花时间看了一下定时器部分的代码,然后结合手册写了一个这样的“一键”定时任意值的函数。
相对的范围大小,我也算出来了,大家需要自取。(注:最好还是去ISP软件点一点看看误差大不大)
其他定时器设置也可以参考.H文件仿写一个出来。
欢迎大家一起讨论
截图202403212158116329.jpg    截图202403212204516155.jpg

  1. /**
  2. * @name Timer0_config
  3. * @brief 定时器/计数器0配置
  4. * @version 版本:v1.0
  5. * @date 日期:2024-3-21
  6. * @author 作者:汐
  7. * @note 注释:
  8. *      Mode,      工作模式    0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 不可屏蔽16位自动重装
  9. *      ClkSource   时钟源            0,1: 做定时器, 12T/1T(12T模式可以定时更长); 2: 做计数器
  10. *      TIM_Value   装载初值      (u16)(65536UL - (MAIN_Fosc*定时时间s) / (TIM_ClkSource * (TIM_PS+1)))
  11. *         16位              Xms:  (MAIN_Fosc / 1000) * X       Xus:  (MAIN_Fosc / 1000000) * X
  12. *      35,000,000L               1T:0~1ms    12T:0~22ms            1T:0~1,872us    12T:0~22,469us
  13. *      24,000,000L               1T:0~2ms    12T:0~32ms            1T:0~2,739us    12T:0~32,768us
  14. *      22,118,400L               1T:0~2ms    12T:0~35ms            1T:0~2,962us    12T:0~35,555us
  15. *      12,000,000L               1T:0~5ms    12T:0~65ms            1T:0~5,461us    12T:0~65,536us
  16. *      11,059,200L               1T:0~5ms    12T:0~71ms            1T:0~5,925us    12T:0~71,111us
  17. */
  18. void Timer0_config()
  19. {
  20.     TIM_InitTypeDef TIM_InitStructure;
  21.     TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; // 工作模式    TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
  22.     TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T;  // 时钟源  TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
  23.     TIM_InitStructure.TIM_ClkOut = DISABLE;           // 是否输出高速脉冲 ENABLE,DISABLE
  24.     TIM_InitStructure.TIM_Value = (u16)(65536UL - ((MAIN_Fosc / 1000 /*ms:1000;us:1000000*/) * 1 /*X*/) / 12 /*12T;1T*/); // 装载初值, 1ms
  25.     TIM_InitStructure.TIM_PS = 0;                     // 8位预分频器(n+1), 0~255
  26.     TIM_InitStructure.TIM_Run = ENABLE;               // 是否初始化后启动定时器   ENABLE,DISABLE
  27.     Timer_Inilize(Timer0, &TIM_InitStructure);        // 初始化Timer0          Timer0,Timer1,Timer2,Timer3,Timer4
  28.     // NVIC_Timer0_Init(ENABLE, Priority_0);             // 中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
  29. }
复制代码


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:402
  • 最近打卡:2025-05-01 10:01:59

0

主题

170

回帖

955

积分

高级会员

积分
955
发表于 2024-3-23 22:03:35 | 显示全部楼层
STC官方的HAL库
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2025-05-01 08:57:33
已绑定手机

30

主题

111

回帖

1659

积分

荣誉版主

Rbowlystar

积分
1659
发表于 2024-3-23 22:37:33 | 显示全部楼层

这是我看他们那个软件库改编出来喔
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:402
  • 最近打卡:2025-05-01 10:01:59

0

主题

170

回帖

955

积分

高级会员

积分
955
发表于 2024-3-23 22:58:08 | 显示全部楼层
四*** 发表于 2024-3-23 22:37
这是我看他们那个软件库改编出来喔

我还以为是官方出了HAL,你这方法好,减少重复造轮子的次数,以后调用就填想要的定时时间就可以,不用再校对一遍寄存器
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:17 , Processed in 0.112762 second(s), 71 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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