四汐 发表于 2024-3-21 22:06:40

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

本帖最后由 四汐 于 2024-3-21 22:11 编辑


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


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

yjawei 发表于 2024-3-23 22:03:35

STC官方的HAL库

四汐 发表于 2024-3-23 22:37:33

yjawei 发表于 2024-3-23 22:03
STC官方的HAL库

这是我看他们那个软件库改编出来喔

yjawei 发表于 2024-3-23 22:58:08

四汐 发表于 2024-3-23 22:37
这是我看他们那个软件库改编出来喔

我还以为是官方出了HAL,你这方法好,减少重复造轮子的次数,以后调用就填想要的定时时间就可以,不用再校对一遍寄存器{:4_250:}
页: [1]
查看完整版本: STC软件库函数之定时器“一键”定时任意值