OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3902|回复: 3

TIM3部分映射PB5不输出信号

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-10-12
在线时间
2 小时
发表于 2020-11-12 15:44:04 | 显示全部楼层 |阅读模式
#include "stm32f1xx_hal.h"
#include "timer.h"
#include "sys.h"
#include "delay.h"

extern TIM_HandleTypeDef  TEMER3_Handler;
void Error_Handler(void);
void timer3_config(void)
{
        TIM_OC_InitTypeDef   sConfiguration;
        TIM_MasterConfigTypeDef sMasterConfig;
//        TIM_ClockConfigTypeDef  TIM_ClockConfig;
       
        HAL_TIM_OC_DeInit(&TEMER3_Handler);
       
        TEMER3_Handler.Instance=TIM3;
        TEMER3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
        TEMER3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;
        TEMER3_Handler.Init.Period=0xffff;
        TEMER3_Handler.Init.Prescaler=0x8C9F;
        TEMER3_Handler.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;
        HAL_TIM_OC_Init(&TEMER3_Handler);
       
        sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&TEMER3_Handler, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
       
        sConfiguration.OCMode=TIM_OCMODE_FORCED_ACTIVE;
        sConfiguration.Pulse=0;
        sConfiguration.OCPolarity=TIM_OCPOLARITY_LOW;
        sConfiguration.OCFastMode = TIM_OCFAST_DISABLE;
        HAL_TIM_OC_ConfigChannel(&TEMER3_Handler, &sConfiguration, TIM_CHANNEL_2);
       
       
        HAL_TIM_OC_Start(&TEMER3_Handler,TIM_CHANNEL_2);

}

void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
{
        GPIO_InitTypeDef   GPIO_Initsture;
       
        __HAL_RCC_TIM3_CLK_ENABLE();
        __HAL_RCC_GPIOB_CLK_ENABLE();
        __HAL_RCC_AFIO_CLK_ENABLE();

        __HAL_AFIO_REMAP_TIM3_PARTIAL();
       
        if(htim->Instance==TIM3)
        {
                GPIO_Initsture.Pin=GPIO_PIN_5;
                GPIO_Initsture.Mode=GPIO_MODE_AF_PP;
                GPIO_Initsture.Speed=GPIO_SPEED_FREQ_HIGH;
                HAL_GPIO_Init(GPIOB,&GPIO_Initsture);
        }
       
}
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler */
  /* User can add his own implementation to report the HAL error return state */
  while(1)
  {
  }
  /* USER CODE END Error_Handler */
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-10-12
在线时间
2 小时
 楼主| 发表于 2020-11-13 10:38:52 | 显示全部楼层
今天有实验了一下,如果在主程序中打开串口初始化就成功了不知道是啥原因
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2020-5-9
在线时间
43 小时
发表于 2021-6-16 21:16:12 | 显示全部楼层
兄弟!我跟你一样,在这个问题我研究了大半天,直到看到你这个帖子。
在uart 初始化MSPinit函数中,调用了对AFIO复用的RCC时钟使能语句。
        __HAL_RCC_AFIO_CLK_ENABLE();
如此重要的信息,正点原子资料中对此,一概不提,我真的是服了。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2020-5-9
在线时间
43 小时
发表于 2021-6-17 09:45:07 | 显示全部楼层
今天也遇到这样的情况,试了大半天也没找到原因,以为是我的程序写错了。
直到看到你的帖子,才发现是在Uart出似乎的MSPInit函数中,调用了     __HAL_RCC_AFIO_CLK_ENABLE()   ,通过该指令 开启复用外设时钟。

说真的,PWM资料中对此绝口不提,容易让人头大。
感谢楼主在发现问题后,自行回复帖子,让我也有了解决的思路。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 19:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表