DEBUG:STM32F1ZET6在Cubemx下编码器无法使用

DEBUG:STM32F1ZET6在Cubemx下编码器无法使用

注:

  • 不建议使用cubemx,尤其做一些复杂点的项目
  • 我只是调好一部分bug,有时候要看一下源码,看不懂就调不了,因为hal网上资料比较少,大部分都是标准库的,虽然目前已经停止更新了。
  • hal一直想要兼容性,但是32兼容性基本上就是一个芯片一套写法。

优点

  • 但是那个图形化的配置参数真心赞。

缺点

  • 出bug是真心难调

核心
启动函数,cubemx最大的优点就是节能,不加个启动函数,它真的不会启动,用爱发电系列。

  • 启动函数有差别,以定时器为例,不同定时器会有差别。
  • 是否中断也会有差别。
  MX_GPIO_Init();
  MX_TIM8_Init();
  MX_TIM2_Init();
  MX_TIM3_Init();
  MX_TIM4_Init();
  MX_TIM5_Init();
  MX_TIM6_Init();
  /* USER CODE BEGIN 2 */
  
  HAL_TIM_Base_Start(&htim3);
  HAL_TIM_Base_Start(&htim4);
  HAL_TIM_Base_Start(&htim5);
  HAL_TIM_Base_Start(&htim8);

  HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_2);
  HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_3);
  HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_4);

  HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);
  HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
  HAL_TIM_Encoder_Start(&htim4, TIM_CHANNEL_ALL);
  HAL_TIM_Encoder_Start(&htim5, TIM_CHANNEL_ALL);

原理就是 TIM2 3 4 5读编码器 TIM6进行中断运算PID,TIM8输出PWM

编码器读取举例:
这是使用的是增量法,适合防止丢步。

case 2:  enc= (uint32_t)(__HAL_TIM_GET_COUNTER(&htim2)); __HAL_TIM_SET_COUNTER(&htim2,0); break;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值