用HAL库改写江科大的stm32入门例子-6-1 定时器定时中断

实验目的:

熟悉基本定时器,定时发送一个数字到oled屏幕 或者通过串口发给pc。

接线图:

实验步骤:

cubeMx创建项目:

 时钟、usart 与前面文档相同,

 

这个实验的主角上场:定时器设置

定时时间 = 定时器频率 / 倍频 /装载周期

完整设置: 

代码部分:

先定义一个全局变量:

main.c中启动定时器:

start timer :就一行代码:

  HAL_TIM_Base_Start_IT(&htim4);

 时间到了,会引发定时器中断,执行回调函数:

完整代码如下:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM4)
  {
    // increment the counter
    counter++;
    // send the counter value by using UART to PC
    char msg[50];
    sprintf(msg, "Counter: %lu\n", counter);
    HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); 
    }
}


int fputc(int ch, FILE *f)
 
{
 
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
 
  return ch;
 
}

 要格式化字符串,除了上面写的fputc函数外,还有一个项目要勾选:

最终效果如图:

定时器相关概论说明:

时钟树:

定时器类别:

预分频器: 目的--扩大及数范围   预分   本身就是个计数器  prescaler

定时器结构:见下图:

定时时长选择:

定时时间 = 定时器频率 / 倍频 /装载周期

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值