打印

TIM4 重映射功能有问题?

[复制链接]
3139|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cjf512|  楼主 | 2009-4-9 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
   这个两句,不管用不用,PB6-PB9都有信号输出,而PD12-PD15始终没有信号输出。
   难道芯片挂了?但是仿真情况也一样?晕忽中.....
沙发
cjf512|  楼主 | 2009-4-9 18:01 | 只看该作者

翻了老帖!

    情况应该跟我一样,也没有解决!
    

使用特权

评论回复
板凳
香水城| | 2009-4-9 20:05 | 只看该作者

GPIOD的时钟开了吗?GPIOD是如何配置的?

可以把PD12-PD15配置为输出模式,试试这些管脚是否坏了。

使用特权

评论回复
地板
cjf512|  楼主 | 2009-4-10 09:14 | 只看该作者

GPIOD时钟开了的。

TIM_TimeBaseStructure.TIM_Period = 999;
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Down;

  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 500;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC1Init(TIM4, &TIM_OCInitStructure);

  TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);


  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);

    /* TIM4 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

  /* GPIOD clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);           

  TIM_ARRPreloadConfig(TIM4, ENABLE);

  /* TIM4 enable counter */
  TIM_Cmd(TIM4, ENABLE);

整个简单配置就是这样,配置为PWM输出,可是根本就没有信号输出!
不重映射时,从PD12-PD15可以输出信号,说明管脚应该没有问题,
请香版和各位高手支招!谢谢!

使用特权

评论回复
5
cjf512|  楼主 | 2009-4-10 09:49 | 只看该作者

同样的设置,

   同样的设置,把他换为TIM2,或者TIM3都没有问题,就算是TIM4,配置为PB管脚的,不重新映射,也都有波形的。
   就是重映射后,什么反应都没有!
   是不是那些地方没注意到,没有配置呢????

使用特权

评论回复
6
McuPlayer| | 2009-4-10 10:16 | 只看该作者

要开3个时钟

GPIOD、TIM4、REMAP

使用特权

评论回复
7
cjf512|  楼主 | 2009-4-10 10:28 | 只看该作者

三个时钟都开了!

   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
这三个时钟是开了,
  GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);这个也配置了呀!

       

使用特权

评论回复
8
香水城| | 2009-4-10 13:34 | 只看该作者

要先开时钟再初始化,你的操作顺序反了

没有打开时钟,初始化不会成功。

使用特权

评论回复
9
cjf512|  楼主 | 2009-4-10 14:23 | 只看该作者

实在没办法,借了新的板子测试!

     估计是芯片不知道怎么挂了,程序在另一块板子上输出很好!
     时钟只要在 开启使能前打开就可以,试验过了。
     不过好的习惯要养成,谢谢香版提醒@!

使用特权

评论回复
10
McuPlayer| | 2009-4-10 18:32 | 只看该作者

对,先开时钟后初始化

没开时钟之前,对相应外设的写操作是失败的,回读验证就知道了。
就是MAPR的写操作会失败,始终是0

GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);
AFIO->MAPR |= 0x00001000;

使用特权

评论回复
11
CJF512| | 2009-4-10 21:11 | 只看该作者

谢谢LS!!!

      恩,记住了以后先开时钟,再初始化。虽然这次不是这个原因。

使用特权

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

本版积分规则

7

主题

377

帖子

0

粉丝