完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
前言
在CubeMx中配置PWM,预分频系数和计数的值决定了波形的周期,pulse决定了占空比。 PWM边沿对齐模式(向上计数) 在PWM模式1下,TIMx_CNT《TIMx_CCRx时,PWM参考信号OCxREF为高,否则为低。 PWM边沿对齐模式(向下计数) TIMx_CR1中的DIR为1时,执行向下计数。在PWM模式1时,TIMx_CNT》TIMx_CCRx时OCxREF为低,否则为高。 PWM模式1与PWM模式2区别 PWM模式1 在向上计数时,一旦TIMx_CNT《TIMx_CCR1时通道1为有效电平,否则为无效电平 在向下计数时,一旦TIMx_CNT》TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效 电平(OC1REF=1)。 PWM模式2 在向上计数时,一旦TIMx_CNT《TIMx_CCR1时通道1为无效电平,否则为有效电平 在向下计数时,一旦TIMx_CNT》TIMx_CCR1时通道1为有效电平,否则为无效电平。 有效电平和无效电平由CCER这个寄存器的CCxP来决定 CC1P:输入/捕获1输出极性(Capture/Compare 1 output polarity) 配置为输出:0:OCx高电平有效 1:OCx低电平有效 实验步骤 生成一个10ms周期的PWM波形,占空比从10~100.。 CubeMx生成芯片工程,配置SWD调试接口,HSE使用“Crystal/Ceramic Resonator” PA0引脚配置为GPIO_EXTI0(配置EXTI中断) PB1引脚配置为TIM3_CH4,在TIM3视图中Clock Source 选择“Internal Clock”,Channel4选择“PWM Generation CH4” 预分频系数填6400-1,计数值填100-1。 在工程项目栏中填入项目名称、路径、版本 在代码生成中选择自己需要的选项,最后生成代码 在int main函数里面添加pwm初始化代码 /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4); /* USER CODE END 2 */ 在int main() { }后面添加EXTI上升沿中断回调函数 /* USER CODE BEGIN 4 */ void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ UNUSED(GPIO_Pin); HAL_Delay(20); if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_SET) { if(duty_cycle==0) duty_cycle+=10; if(duty_cycle==100) duty_cycle=-10; Set_PWM_DUTYCYCLE(duty_cycle); duty_cycle+=duty_cycle; } } /* USER CODE END 4 */ 在int main() { }前面添加自定义改变PWM参数的函数 /* USER CODE BEGIN PV */ uint8_t duty_cycle=0; /* USER CODE END PV */ /* USER CODE BEGIN 0 */ void Set_PWM_DUTYCYCLE(uint8_t duty_cycle) { TIM_OC_InitTypeDef sConfigOC; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = duty_cycle; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) { Error_Handler(); } HAL_TIM_MspPostInit(&htim3); HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4); } /* USER CODE END 0 */ 在debug选项卡中勾上“Reset and Run”,编译。烧录 当你不停按下按钮时,就会看到LED等从暗到亮,从亮到暗变化。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1786 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1622 浏览 1 评论
1089 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
730 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1942浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
739浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
576浏览 3评论
598浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
560浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 12:44 , Processed in 0.793408 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号