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

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

[复制链接]
  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 79 天

    [LV.6]常住居民II

    4

    主题

    44

    回帖

    529

    积分

    高级会员

    积分
    529
    发表于 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. }
    复制代码


    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 45 天

    [LV.5]常住居民I

    0

    主题

    157

    回帖

    353

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 79 天

    [LV.6]常住居民II

    4

    主题

    44

    回帖

    529

    积分

    高级会员

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 45 天

    [LV.5]常住居民I

    0

    主题

    157

    回帖

    353

    积分

    中级会员

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 20:15 , Processed in 0.059211 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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