你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32G0 TIM中断使用

[复制链接]
STMCU小助手 发布时间:2021-11-8 14:30
时钟配置
20210710145725120.png


TIM配置
2021071014574973.png


3s一次中断

中断配置
20210710145824733.png


开启
      
  1. HAL_TIM_Base_Start_IT(&htim1);
复制代码
  1. 任务中的临界区
  2. static void vTaskLED(void *pvParameters)
  3. {
  4.     while(1)
  5.     {                        
  6.                         uint8_t data[]="LED";
  7.                         taskENTER_CRITICAL();   /* 进入临界区 */
  8.                         HAL_UART_Transmit(&huart1,data,sizeof(data),0xff);
  9.                         taskEXIT_CRITICAL();          /* 退出临界区 */        
  10.                         HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
  11.                                         vTaskDelay(500);
  12.     }
  13. }
复制代码
  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  2. {
  3.         if(htim->Instance==TIM1)
  4.         {
  5.                         uint8_t data[]="TIM1 Interrupt";

  6.                         HAL_UART_Transmit(&huart1,data,sizeof(data),0xff);

  7.         }
复制代码

带有FreeRTOS
中断的临界区

  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  2. {

  3.         
  4.         BaseType_t xYieldRequired;
  5.         UBaseType_t uxSavedInterruptStatus;
  6.         uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); /* 进入临界区*/
  7.         {
  8.                 /* 用户可以在这里添加临界段代码,我们这里暂时未用到*/
  9.                 if(htim->Instance==TIM1)
  10.                 {
  11.                         uint8_t data[]="TIM1 Interrupt";
  12.                
  13.                         HAL_UART_Transmit(&huart1,data,sizeof(data),0xff);
  14.         
  15.                 }
  16.         
  17.         }
  18.         portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); /* 退出临界区*/
  19.         /** 恢复挂起任务*/
  20.         xYieldRequired = xTaskResumeFromISR(xHandleTaskLED);
  21.         /* 退出中断后是否需要执行任务切换*/
  22.         if( xYieldRequired == pdTRUE )
  23.         {
  24.                 portYIELD_FROM_ISR(xYieldRequired);
  25.         }
  26. }

复制代码

收藏 评论0 发布时间:2021-11-8 14:30

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版