打印

【已解决】TIM4的Remap死活不干活,请求协助!!!

[复制链接]
4602|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
McuPlayer|  楼主 | 2009-4-3 00:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, REMAP, pi, IO, gp
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

//这2个语句任何一个都可Remap TIM4
//    GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);
//    AFIO->MAPR |= 0x00001000;

    TIM_Cmd(TIM4, ENABLE);
    while(1);


我用的是TIM3的CH3,输出PWM信号
无论是否打开Remap,PB8上都有PWM信号输出,怎么也无法Remap到PD14上去。
所有的IO时钟都已打开,用的是TQFP100的,STM32F103VBT6

请各位给点解一下,谢谢。
沙发
McuPlayer|  楼主 | 2009-4-3 02:45 | 只看该作者

Trace出了一点头绪

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

这两句都无法修改AFIO->MAPR的数值,AFIO->MAPR始终保持为Reset后的0不变。

用MDK的Simulator调试,发现此寄存器可以修改。
但JTAG到实际芯片,此寄存器一直是0

使用特权

评论回复
板凳
McuPlayer|  楼主 | 2009-4-3 06:03 | 只看该作者

终于找到原因了,结贴!

原来STM32的管脚“乾坤大挪移”是要额外多开CLK开关的。

RCC_APB2Periph_AFIO这个CLK可以不开,如果你不用IO Remap功能。
但如果用了IO Remap却没有开这个CLK,就会遇到跟我一样的情况了。

使用特权

评论回复
地板
McuPlayer|  楼主 | 2009-4-3 09:06 | 只看该作者

切,这跟是否用库有P个关系

为反对用FWLib库,就把所有无关的屎盆子都扣过去,无语。

使用特权

评论回复
5
McuPlayer|  楼主 | 2009-4-3 09:32 | 只看该作者

产品的优势不仅仅是技术,还有技术的模式-----比如 可复用

因为相对简单,没用EmbOS,而是用消息泵隔开App和Driver

正因为如此,去年可以用不到一周的时间把它移植到STM32上,并基本测试通过。

三年河东,三年河西
说不定明天就不用STM32了,尽量减少对硬件的依赖,移植才有优势。

即使硬件和软件都是一个工程师做,也应该尽量降低二者的耦合程度。

使用特权

评论回复
6
香水城| | 2009-4-3 10:30 | 只看该作者

注意:只要用到了管脚重映射功能,都必须打开AFIO时钟

所有可能的重映射功能,都在STM32参考手册的7.3节中说明。

使用特权

评论回复
7
McuPlayer|  楼主 | 2009-4-10 18:30 | 只看该作者

顶上来给cjf512看

使用特权

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

谢谢LS!!!

     谢谢 McuPlayer的关注!
     我发贴前,是先搜索有没有相关的贴的,你这个贴我看过了,你是忘记了开AFIO时钟,但是我是打开了也不行的。
     最后借了块板调试了,程序没有问题,是我的芯片可能有问题。
     再次感谢!

使用特权

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

本版积分规则

338

主题

7307

帖子

26

粉丝