打印
[STM32F1]

stm32 HAL 通用时钟调试笔记

[复制链接]
1411|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arronfu|  楼主 | 2018-3-22 16:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目标:使用TIM5产生定时中断

启动:
1. 初始化,初始化代码如下
static void MX_TIM5_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_MasterConfigTypeDef sMasterConfig;

  htim5.Instance = TIM5;
  htim5.Init.Prescaler = 72-1;
  htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim5.Init.Period = 0xFFFFFFFF;
  htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim5) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}

2. 启动定时器

  if(HAL_TIM_Base_Start_IT(&htim5) != HAL_OK)
  {
    /* Starting Error */
       
    while(1)printf("error\r\n");
  }

中断响应:
void TIM5_IRQHandler(void)
{
  /* USER CODE BEGIN TIM5_IRQn 0 */

  /* USER CODE END TIM5_IRQn 0 */
  HAL_TIM_IRQHandler(&htim5);
  /* USER CODE BEGIN TIM5_IRQn 1 */
  time++;
  /* USER CODE END TIM5_IRQn 1 */
}

中断响应中添加用户代码,尽量短,如上文只是添加变量自增。

应用程序中根据time,进行响应处理。
沙发
huangcunxiake| | 2018-3-22 18:27 | 只看该作者
如果是裸奔程序,那根本上我觉得是中断函数里不应该搞太多程序段,会影响其他中断,应该把各种标志开关放进去,在主程序处理,除非特别紧急的中断。

使用特权

评论回复
板凳
734774645| | 2018-3-22 22:59 | 只看该作者
STM32跟别的家库函数风格明显不同。

使用特权

评论回复
地板
734774645| | 2018-3-22 22:59 | 只看该作者
参数喜欢搞的很长,这个是STM32特点,自从出了图形和配置工具,真滴不适合手工配置了。

使用特权

评论回复
5
arronfu|  楼主 | 2018-3-23 09:46 | 只看该作者
734774645 发表于 2018-3-22 22:59
参数喜欢搞的很长,这个是STM32特点,自从出了图形和配置工具,真滴不适合手工配置了。 ...

是的,点下图形,软件就形成好了

使用特权

评论回复
6
arronfu|  楼主 | 2018-3-23 09:48 | 只看该作者
huangcunxiake 发表于 2018-3-22 18:27
如果是裸奔程序,那根本上我觉得是中断函数里不应该搞太多程序段,会影响其他中断,应该把各种标志开关放进 ...

里面只有一个变量自增,其余的都在主函数里面

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

58

帖子

0

粉丝