f1系列定时器

注意:在中断中尽量不要用定时器,如果用的话记得调高定时器的优先级。

f1系列定时器:

tim6和tim7是基本定时器,只能向上计数,只能定时,没有外部IO。

tim1和tim8是高级定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,有8个外部IO。做电机控制会用到高级定时器。

tim2/3/4/5是通用定时器,可以定时,可以输出比较,可以输入捕捉,有4个外部IO。

使用tim3实现us级延时(总会多出大概10us)

开始代码前先按照我写的定时器延时公式配置一下。

//注意一次延时不要超过最大延时
void delay_us(uint32_t us)
{
//。tim3开始计数
    HAL_TIM_Base_Start(&htim3);
//  设置tim3寄存器值为0
    __HAL_TIM_SET_COUNTER(&htim3,0);
    while(__HAL_TIM_GET_COUNTER(&htim3)<us)
    {

    }
    HAL_TIM_Base_Stop(&htim3);

}

由于hal库的自身原因导致72Mhz下每次运行延时函数都会多10us的时间,所以现在要在原来的基础上减去10us。

修改后的代码(特别注意延时时间不能小于10us)

//注意一次延时不要超过最大延时
void delay_us(uint32_t us)
{
    us-=10;
//。tim3开始计数
    HAL_TIM_Base_Start(&htim3);
//  设置tim3寄存器值为0
    __HAL_TIM_SET_COUNTER(&htim3,0);
    while(__HAL_TIM_GET_COUNTER(&htim3)<us)
    {

    }
    HAL_TIM_Base_Stop(&htim3);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值