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

关于FOC库的中断配置,望大神指条明路

[复制链接]
smgyang 提问时间:2020-6-7 01:17 /
调了一个月,快疯了
系统配置:stm32F103RC+单电机+3shunt+hall
第一:为什么TIM1有update中断入口函数而NVIC中没有配置TIM1的TIM1_UP_IRQn,而tim1的update中断函数应该在每次溢出时配置采样的通道的,肯定每个pwm周期都要进的啊?而在update中断函数中为什么又关掉中断使能(LL_TIM_DisableIT_UPDATE),其他使能的地方只有R3_2_SwitchOnPWM这个函数里,难道只要电机启动 的时候进入一次吗?怎么可能
static void MX_NVIC_Init(void)
{
  /* ADC1_2_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(ADC1_2_IRQn, 2, 0);
  HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
  /* DMA1_Channel1_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
  /* TIM2_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0);
  HAL_NVIC_EnableIRQ(TIM2_IRQn);
  /* USART3_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(USART3_IRQn, 3, 1);
  HAL_NVIC_EnableIRQ(USART3_IRQn);
       
}


void TIMx_UP_M1_IRQHandler(void)
{
  /* USER CODE BEGIN TIMx_UP_M1_IRQn 0 */

  /* USER CODE END TIMx_UP_M1_IRQn 0 */  
    LL_TIM_ClearFlag_UPDATE(TIM1);
    R3_2_TIMx_UP_IRQHandler(&PWM_Handle_M1);
    LL_TIM_DisableIT_UPDATE(TIM1);
   /* USER CODE BEGIN TIMx_UP_M1_IRQn 1 */

   /* USER CODE END TIMx_UP_M1_IRQn 1 */   
}



第二:为什么NVIC中配置了DMA中断而没有中断入口函数,真的要疯了

跪求解答。好人一生平安!
收藏 评论3 发布时间:2020-6-7 01:17

举报

3个回答
smgyang 回答时间:2020-6-7 17:25:09
有没有大神给个回复啊
子曰好人 回答时间:2020-6-8 09:07:24
第一:你用的LL库,我没用过,我这边生成的是这样的,库版本是5.32
  1. static void MX_NVIC_Init(void)
  2. {
  3.   /* TIM1_BRK_TIM15_IRQn interrupt configuration */
  4.   HAL_NVIC_SetPriority(TIM1_BRK_TIM15_IRQn, 4, 1);
  5.   HAL_NVIC_EnableIRQ(TIM1_BRK_TIM15_IRQn);
  6.   /* ADC1_IRQn interrupt configuration */
  7.   HAL_NVIC_SetPriority(ADC1_IRQn, 2, 0);
  8.   HAL_NVIC_EnableIRQ(ADC1_IRQn);
  9.   /* TIM2_IRQn interrupt configuration */
  10.   HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0);
  11.   HAL_NVIC_EnableIRQ(TIM2_IRQn);
  12.   /* USART2_IRQn interrupt configuration */
  13.   HAL_NVIC_SetPriority(USART2_IRQn, 3, 1);
  14.   HAL_NVIC_EnableIRQ(USART2_IRQn);
  15.   /* EXTI15_10_IRQn interrupt configuration */
  16.   HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  17.   HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
  18. }
复制代码
  1. void TIMx_UP_M1_IRQHandler(void)
  2. {
  3. /* USER CODE BEGIN TIMx_UP_M1_IRQn 0 */

  4. /* USER CODE END  TIMx_UP_M1_IRQn 0 */

  5.     LL_TIM_ClearFlag_UPDATE(PWM_Handle_M1.pParams_str->TIMx);
  6.     R3_1_F30X_TIMx_UP_IRQHandler(&PWM_Handle_M1);
  7. /* USER CODE BEGIN TIMx_UP_M1_IRQn 1 */

  8. /* USER CODE END  TIMx_UP_M1_IRQn 1 */
  9. }
复制代码

第二:如果没有DMA入口函数,可能是在程序中等dma转换完成直接读取DMA传输到的地址
smgyang 回答时间:2020-6-8 10:39:26
子曰好人 发表于 2020-6-8 09:07
第一:你用的LL库,我没用过,我这边生成的是这样的,库版本是5.32

你的代码NVIC中没有配置和使能高级定时器的update中断,也能进那个中断服务函数吗?

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版