提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
、
一、STM32CUBEMX_基于PWM的呼吸灯
1、新建工程,进行基本配置。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:
打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。选择调试接口,点击“System Core”,选择RCC。,在右侧弹出的菜单栏中选择“Serial Wire”。
2、配置定时器2。如图,位置1选中定时器2;位置2选择时钟源为“Internal Clock”,通道2选择“PWM Generation CH2”
!](https://img-blog.csdnimg.cn/5cbcff3dd143448186f96ccf34837285.jpeg)
1.初值设为10.
uint16_t duty_num = 10;
2,开始TIM2的通道2,输出PWM。
代码:
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
3,每隔50毫秒,占空比加10,如果超过500(也就是PWM周期),自动变成0.
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(50);
duty_num = duty_num + 10;
if(duty_num > 500)
{
duty_num = 0;
}
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,duty_num);
}
video_20221112_204531
二、STM32F103C8移植uCOSIII
`bsp.c
#include “includes.h”
#define DWT_CR *(CPU_REG32 *)0xE0001000
#define DWT_CYCCNT *(CPU_REG32 *)0xE0001004
#define DEM_CR *(CPU_REG32 *)0xE000EDFC
#define DBGMCU_CR *(CPU_REG32 *)0xE0042004
#define DEM_CR_TRCENA (1 << 24)
#define DWT_CR_CYCCNTENA (1 << 0)
CPU_INT32U BSP_CPU_ClkFreq (void)
{
return HAL_RCC_GetHCLKFreq();
}
void BSP_Tick_Init(void)
{
CPU_INT32U cpu_clk_freq;
CPU_INT32U cnts;
cpu_clk_freq = BSP_CPU_ClkFreq();
#if(OS_VERSION>=3000u)
cnts = cpu_clk_freq/(CPU_INT32U)OSCfg_TickRate_Hz;
#else
cnts = cpu_clk_freq/(CPU_INT32U)OS_TICKS_PER_SEC;
#endif
OS_CPU_SysTi