打印
[STM32F1]

stm32f103rbt6使用stm32cubemx配置pwm无输出

[复制链接]
281|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
classroom|  楼主 | 2024-12-9 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是我使用stm32cubemx生成的代码,使用示波器查看没有任何波形,pwm启动函数也加了,就是没有输出,找了好久还是没有解决,求解惑!


void MX_TIM3_Init(void)
{

/* USER CODE BEGIN TIM3_Init 0 */

/* USER CODE END TIM3_Init 0 */

TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};

/* USER CODE BEGIN TIM3_Init 1 */

/* USER CODE END TIM3_Init 1 */
htim3.Instance = TIM3;
htim3.Init.Prescaler = 72-1;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 416;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
{
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 200;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM3_Init 2 */
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);//此函数为开启pwm输出
/* USER CODE END TIM3_Init 2 */
HAL_TIM_MspPostInit(&htim3);

}


void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{

if(tim_baseHandle->Instance==TIM2)
{
/* USER CODE BEGIN TIM2_MspInit 0 */

/* USER CODE END TIM2_MspInit 0 */
/* TIM2 clock enable */
__HAL_RCC_TIM2_CLK_ENABLE();

/* TIM2 interrupt Init */
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
/* USER CODE BEGIN TIM2_MspInit 1 */

/* USER CODE END TIM2_MspInit 1 */
}
else if(tim_baseHandle->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspInit 0 */

/* USER CODE END TIM3_MspInit 0 */
/* TIM3 clock enable */
__HAL_RCC_TIM3_CLK_ENABLE();
/* USER CODE BEGIN TIM3_MspInit 1 */

/* USER CODE END TIM3_MspInit 1 */
}
}
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
{

GPIO_InitTypeDef GPIO_InitStruct = {0};
if(timHandle->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspPostInit 0 */

/* USER CODE END TIM3_MspPostInit 0 */

__HAL_RCC_GPIOB_CLK_ENABLE();
/**TIM3 GPIO Configuration
PB1     ------> TIM3_CH4
*/
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN TIM3_MspPostInit 1 */

/* USER CODE END TIM3_MspPostInit 1 */
}

}

void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
{

if(tim_baseHandle->Instance==TIM2)
{
/* USER CODE BEGIN TIM2_MspDeInit 0 */

/* USER CODE END TIM2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM2_CLK_DISABLE();

/* TIM2 interrupt Deinit */
HAL_NVIC_DisableIRQ(TIM2_IRQn);
/* USER CODE BEGIN TIM2_MspDeInit 1 */

/* USER CODE END TIM2_MspDeInit 1 */
}
else if(tim_baseHandle->Instance==TIM3)
{
/* USER CODE BEGIN TIM3_MspDeInit 0 */

/* USER CODE END TIM3_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM3_CLK_DISABLE();
/* USER CODE BEGIN TIM3_MspDeInit 1 */

/* USER CODE END TIM3_MspDeInit 1 */
}
}

使用特权

评论回复
沙发
elephant00| | 2024-12-9 15:44 | 只看该作者
可能是硬件故障。

使用特权

评论回复
板凳
classroom|  楼主 | 2024-12-9 16:10 | 只看该作者
要将PWM功能引脚配置为复用推挽输出模式。

使用特权

评论回复
地板
laocuo1142| | 2024-12-9 17:00 | 只看该作者
检查引脚是否与其他功能冲突,如GPIO、UART、SPI等。

使用特权

评论回复
5
flycamelaaa| | 2024-12-9 18:10 | 只看该作者
引脚时钟使能是否正确。

使用特权

评论回复
6
powerantone| | 2024-12-9 19:26 | 只看该作者
检查是否配置了正确的时钟源

使用特权

评论回复
7
stormwind123| | 2024-12-9 20:00 | 只看该作者
定时器的工作模式是否正确选择为PWM模式

使用特权

评论回复
8
duo点| | 2024-12-9 20:16 | 只看该作者
检查是否配置了正确的预分频系数和重装载值。

使用特权

评论回复
9
两只袜子| | 2024-12-9 20:46 | 只看该作者
检查输出通道的极性设置是否正确,如正极性、反极性或反相输出。

使用特权

评论回复
10
onlycook| | 2024-12-9 21:00 | 只看该作者
高级定时器,检查是否配置了正确的PWM模式选择、输出通道选择、预分频系数和重装载值等。

使用特权

评论回复
11
jcky001| | 2024-12-9 21:46 | 只看该作者
如果使用了中断来控制PWM输出,检查是否配置了正确的中断使能和中断优先级。

使用特权

评论回复
12
七毛钱| | 2024-12-9 22:00 | 只看该作者
输出通道是否正确选择为PWM模式。

使用特权

评论回复
13
cr315| | 2024-12-9 22:13 | 只看该作者
检查PWM输出相关的逻辑代码是否正确

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

447

主题

2372

帖子

1

粉丝