蓝桥杯嵌入式定时器加频率捕获函数总结

一、定时器计时启用:

配置内部时钟和开启定时器全局中断就可以了 时间单位标准一秒

HAL_TIM_Base_Start_IT(&htim2)

定时器计时停止 

HAL_TIM_Base_Stop_IT(&htim2)

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//中断
{
    if(htim->Instance == TIM2)
    {

     }

二、pwm输出启用

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

pwm输出停止

HAL_TIM_PWM_Stop(&htimX, TIM_CHANNEL_Y);

三、pwm输入捕获

在hal库先配置好DMA及中断,解放cpu资源

    HAL_TIM_IC_Start_DMA(&htim3,TIM_CHANNEL_1,tim_ic_buffer[0],64);
    HAL_TIM_IC_Start_DMA(&htim2,TIM_CHANNEL_1,tim_ic_buffer[1],64);

在数据处理时,容易少这两句s

    tim_ic_val[0] = (int)((float)(1000.0f * 1000.0f) / (float)tim_ic_temp);
    tim_ic_val[1] = (int)((float)(1000.0f * 1000.0f) / (float)tim_ic_temp2); 

 四、按键长按检测

if(key_down==3)      if(Key_up==3) if(uwTick-key_tick>1000)

{
key_tick=uwTick;
}

    key_up = ~key_val &(key_old ^ key_val);会影响key_up
 

 五、怎么配置闪烁灯

 六、计时定时器

七、改变频率而不改变占空比

八、各个数据的类型

adc_val是float

九、DMA的各个中断开启

ADC   

    HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&adc_buffer[0][0],30);
    HAL_ADC_Start_DMA(&hadc2,(uint32_t*)&adc_buffer[1][0],30);

输入捕获
    HAL_TIM_IC_Start_DMA(&htim3,TIM_CHANNEL_1,tim_ic_buffer[0],64);
    HAL_TIM_IC_Start_DMA(&htim2,TIM_CHANNEL_1,tim_ic_buffer[1],64);

PWM输出

  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_4);

 

void tim2ch2_set_fre(uint32_t fre)
{
    uint32_t tim2_clk=80000000;
    uint32_t prescaler;
    prescaler=tim2_clk/(fre*(TIM2->ARR +1))-1;

    __HAL_TIM_SET_PRESCALER(&htim2,prescaler);


    //触发更新
     TIM2->EGR = TIM_EGR_UG;
}
void tim3ch2_set_fre(uint32_t fre)
{
    uint32_t tim3_clk=80000000;
    uint32_t prescaler;
    prescaler=tim3_clk/(fre*(TIM3->ARR +1))-1;

    __HAL_TIM_SET_PRESCALER(&htim3,prescaler);


    //触发更新
     TIM3->EGR = TIM_EGR_UG;
}

十、记得led与system的区别 

 

一些函数的名称

1串口解析  atoi 字符串->整形   

memcmp 判断是否一致 memcmp(usart_read_buffer,mima_zhen,sizeof(mima_zhen)

memcpy  memcpy(mima_zhen,&usart_read_buffer[4],3);将后赋给前面

2定时器    HAL_TIM_Base_Start_IT(&htim1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值