精品资料网官方网站,赣州百度推广,物联网设计竞赛,高校人力资源管理系统网站开发采用工具进行相关的配置#xff0c;选择好对应的封装#xff1f;这里开启了tim1#xff0c;tim2对应的通道#xff0c;同时进行相关参数的配置
根据时钟树的显示#xff0c;这里面不再对时钟的频率进行修改#xff0c;采用默认方式。那么下面看看对应的关键配置#xff…采用工具进行相关的配置选择好对应的封装这里开启了tim1tim2对应的通道同时进行相关参数的配置根据时钟树的显示这里面不再对时钟的频率进行修改采用默认方式。那么下面看看对应的关键配置因为tim1是高级计时器所以参数比较多但是这里用到的比较有限同理tim2是一个普通计时器只要简单正确配置就可以了那么看看关键代码复制/* USER CODE BEGIN 2 */// Start the PWM channels for both LEDs// Note: Use the correct Timer handle and Channel defined by your configurationif (HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_2) ! HAL_OK) // For LED on PC9{Error_Handler();}if (HAL_TIM_PWM_Start(htim2, TIM_CHANNEL_1) ! HAL_OK) // For LED on PA5{Error_Handler();}// --- Variables for breathing effect ---// Set PWM_MAX_VALUE to your timers ARR (Auto-Reload Register) value// Assuming ARR was set to 999 for both timers in CubeMX for a 0-1000 rangeuint32_t pwm_max_value 999;uint32_t brightness 0;int8_t step 5; // How much to change brightness each stepuint8_t delay_ms 10; // Delay between steps, controls breathing speed/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */// --- Fade In ---for (brightness 0; brightness pwm_max_value; brightness step){// Clamp brightness to max value in case step overshootsif (brightness pwm_max_value) {brightness pwm_max_value;}// Set the PWM duty cycle (Compare value) for both LEDs simultaneously__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_2, brightness); // LED on PC9__HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, brightness); // LED on PA5HAL_Delay(delay_ms); // Adjust delay for breathing speed}// Ensure brightness is exactly max value after loop__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_2, pwm_max_value);__HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, pwm_max_value);HAL_Delay(delay_ms * 10); // Optional: Pause briefly at full brightness// --- Fade Out ---// Start slightly below max to avoid issues with unsigned wrap-around if step doesnt divide evenlyfor (brightness pwm_max_value; brightness 0; ){// Decrement first, then check boundsif (brightness step) { // Prevent underflow for unsigned intbrightness 0;} else {brightness - step;}// Set the PWM duty cycle (Compare value) for both LEDs simultaneously__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_2, brightness); // LED on PC9__HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, brightness); // LED on PA5HAL_Delay(delay_ms); // Adjust delay for breathing speed}// Ensure brightness is exactly 0 after loop__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_2, 0);__HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, 0);HAL_Delay(delay_ms * 10); // Optional: Pause briefly when off/* USER CODE END 3 */}/* USER CODE BEGIN 3 */}/* USER CODE END 3 */并且构建成功继续新的探索---------------------作者yinxiangxv链接https://bbs.21ic.com/icview-3450506-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。