在此,感谢与非网送的板子!!! 直接进入主题: 1.首先配置引脚. 双击TIM1,就会显出默认配置引脚。如果需要修改,可以查看datasheet,在对应的管脚位上双击,选择切换。 2.配置时钟. 我是用内部HSI,倍频获得最高系统主频80M. 3.配置定时器Tim1 中心对称模式2 pwm频率16K(80M/16k/2-1=2499) Dead Time 80 (就是1us,查看死区寄存器,按公式计算) 三路互补pwm输出 4.配置工程 以上页面中红框1表示每个外设单独生成一个.c和.h文件,这样层次更明确。红框2中表示把其余不用的pin脚都设置为模拟输入以降低功耗,也选上。 生成工程后会自动生成4个文件夹。其中Drivers就是硬件抽象层,类似于以前的库,都以“hal”结尾。inc和src分别是生成的头文件和包含文件。Projects是工程快捷方式。 5. 添加代码,输出波形。 /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3); /* USER CODE END 2 */ 再调出波形之前,一直在心里骂这个CubeMX,竟然找不到配置选项直接输出pwm波。 到stm32l4xx_hal_tim.c 里找到HAL_TIM_PWM_Start 这个函数输出正极pwm,却输不出互补波形。 最后,找了老半天才到stm32l4xx_hal_tim_ex.c找到了HAL_TIMEx_PWMN_Start,这才终于输出互补波形。 提问: 1.CubeMX可以直接配置输出吗?反正我找不到。 2.stm32l4xx_hal_tim_ex.c 和 stm32l4xx_hal_tim.c,整这两处什么个缘由? 结束!欢迎指教!!! |
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);
/* USER CODE END 2 */
初用CUBE的人都会骂这一点的,真不明白初始为什么不加上去
1.CubeMX可以直接配置输出吗?反正我找不到。
答:您指的这个输出是出书工程还是?比如说输出keil5的工程或者怎样。
2.stm32l4xx_hal_tim_ex.c 和 stm32l4xx_hal_tim.c,整这两处什么个缘由?
答:这个是标准的hal的库文件,stm32l4xx_hal_tim_ex.c这个的ex的扩展的意思。如果可以的话,您可以对两个文件进行文本对比就知道了。
1.CubeMX可以直接配置输出吗?
没有,都需要软件开启,才能输出。。标准库里也是一样。。。
2.stm32l4xx_hal_tim_ex.c 和 stm32l4xx_hal_tim.c,整这两处什么个缘由?
你好好看看,HAL库的结构。。_tim_ex.c结尾是扩展库函数文件,_tim.c是普通的库函数。在HAL库里是分2个的。。
地板正解