OpenEdv-开源电子网

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

STM32F103VET6定时器引脚重映射问题

[复制链接]

1

主题

6

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
9692
金钱
9692
注册时间
2016-2-29
在线时间
567 小时
发表于 2016-2-29 15:22:42 | 显示全部楼层 |阅读模式
1金钱
各位大神请教一下,我现在使用的是STM32F103VET6,然后使用STM32CubeMX定义引脚功能然后出现问题如下:
定时器4的4个通道的默认引脚为PB6,7,8,9,重映射引脚为PD12,13,14,15,现在因为我占用了默认引脚PB6,7作为I2C,重印设引脚PD14,15引脚作为FSMC的DO和D1,将PD12,13设为定时器4的通道1,2为PWM,然后无法定义PB8,9为定时4的通道3,4作为PWM。  这是MX的模拟的问题还是实际就不能这样使用。数据手册上没找到部分映射和完全映射的相关说明。请各位大神帮忙解答一下,谢谢!!!

最佳答案

查看完整内容[请看2#楼]

好的 谢谢 代码的话暂时还没,主要定义引脚功能,是不是没写部分重映射的都默认为完全重映射 是的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-2-29 15:22:43 | 显示全部楼层
6aaaaaa 发表于 2016-2-29 16:26
好的 谢谢  代码的话暂时还没,主要定义引脚功能,是不是没写部分重映射的都默认为完全重映射,我在本站 ...


好的 谢谢  代码的话暂时还没,主要定义引脚功能,是不是没写部分重映射的都默认为完全重映射
是的
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-2-29 16:19:59 | 显示全部楼层
你可以看说明书有没有你需要的要求
我这里有定时器4的编码器模式, 你代码,你可以参考一下/*******************************************************************************************
函 数 名: 定时器4编码器模式初始化函数
调    用: TIM4_BMQMS_Init(u8 remap)
参    数: reamap 复用功能重映像 00,01 如果参数错误,则采用00参数
反 回 值: 无
说    明: 初始化编码器的AB信号接于 CH1,CH2上 四倍频输出
          定时器4只有一个位用于控制IO接的映像 REMAP
********************************************************************************************/  
void TIM4_BMQMS_Init(u8 remap)
     {
     if(remap ==0) //TIM4_REMAP = 0;
       {
       RCC->APB2ENR |= 1<<3;               //使能PORTB时钟     
       GPIOB->CRL &= 0x00FFFFFF;           //PB6,PB7
       GPIOB->CRL |= 0x44000000;           //浮空输入               
       }             
     else{//TIM4_REMAP = 1;
         RCC->APB2ENR |= 1<< 0;             //开启辅助功能时钟
         BIT_ADDR((u32)& AFIO->MAPR,12) = 1;//高电平(TIM4_REMAT )   
         RCC->APB2ENR |= 1<<5;              //使能PORTD时钟     
         GPIOD->CRH &= 0xFF00FFFF;          //PD12,PD13
         GPIOD->CRH |= 0x00440000;          //浮空输入  
         }
     BIT_ADDR((u32)& RCC->APB1ENR,2) = 1;   //TIM4时钟使能         
     BIT_ADDR((u32)& RCC->APB1RSTR,2) = 1;  //复位TIM4定时器,使之进入初始状态
     BIT_ADDR((u32)& RCC->APB1RSTR,2) = 0;  //结束复位   
     BIT_ADDR((u32)& TIM4->DIER,0) = 1;     //允许定时器更新中断                                  
     TIM4->PSC = 0;                         //预分频器,不分频
    // TIM4->ARR = ENCODER_TIM_PERIOD;        //设定计数器自动重装值   
     TIM4->CR1 &=~(3<<8);                   //选择时钟分频:不分频(在输入捕获中止参数无效)
     TIM4->CR1 &=~(3<<5);                   //选择计数模式:中央对齐模式(向上或向下计数)
     TIM4->CCMR1 |= 1<<0;                   //CC1S='01' IC1FP1映射到TI1
     TIM4->CCMR1 |= 1<<8;                   //CC2S='01' IC2FP2映射到TI2      
     TIM4->CCER &= ~(1<<1);                 //CC1P='0'        IC1FP1不反相,IC1FP1=TI1
     TIM4->CCER &= ~(1<<5);                 //CC2P='0'        IC2FP2不反相,IC2FP2=TI2
     TIM4->CCMR1 |= 3<<4;                   //IC1F='1000' 输入捕获1滤波器(可能影响采集响应速度)
     TIM4->SMCR |= 3<<0;                    //SMS='011' 所有的输入均在上升沿和下降沿有效(四倍频的输出)
     TIM4->CNT = ENCODER_TIM_PERIOD;        //计数器的初值
    // B_CONSTER_DAT = COUNTER_RESET;         //清零中断计数累加器的值为初始值   
    // MY_NVIC_Init(0,0,TIM4_IRQn,4);         //抢占0,子优先级0,组4 设定时器3更新中断为最高级别中断  
     TIM4->CR1 |= 0x01;                     //CE N=1,使能定时器
     }  

回复

使用道具 举报

1

主题

6

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
9692
金钱
9692
注册时间
2016-2-29
在线时间
567 小时
 楼主| 发表于 2016-2-29 16:26:24 | 显示全部楼层
likunxue 发表于 2016-2-29 16:19
你可以看说明书有没有你需要的要求
我这里有定时器4的编码器模式, 你代码,你可以参考一下/************* ...

好的 谢谢  代码的话暂时还没,主要定义引脚功能,是不是没写部分重映射的都默认为完全重映射,我在本站找了一个参考的http://www.openedv.com/thread-19850-1-1.html
回复

使用道具 举报

1

主题

6

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
9692
金钱
9692
注册时间
2016-2-29
在线时间
567 小时
 楼主| 发表于 2016-2-29 16:37:50 | 显示全部楼层
likunxue 发表于 2016-2-29 16:33
好的 谢谢  代码的话暂时还没,主要定义引脚功能,是不是没写部分重映射的都默认为完全重映射
是的

谢谢了   
回复

使用道具 举报

4

主题

62

帖子

0

精华

高级会员

Rank: 4

积分
788
金钱
788
注册时间
2015-8-21
在线时间
128 小时
发表于 2016-2-29 16:49:18 | 显示全部楼层
TIM4重映象后PB6.7.8.9同时映射为PD12.PD13.PD14.PD15了,PB8,9就不再是定时器的3,4通道了。。
回复

使用道具 举报

1

主题

6

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
9692
金钱
9692
注册时间
2016-2-29
在线时间
567 小时
 楼主| 发表于 2016-2-29 16:51:05 | 显示全部楼层
—孤独¥的风 发表于 2016-2-29 16:49
TIM4重映象后PB6.7.8.9同时映射为PD12.PD13.PD14.PD15了,PB8,9就不再是定时器的3,4通道了。。

恩 了解了 是完全重映射 谢谢
回复

使用道具 举报

4

主题

62

帖子

0

精华

高级会员

Rank: 4

积分
788
金钱
788
注册时间
2015-8-21
在线时间
128 小时
发表于 2016-2-29 16:52:38 | 显示全部楼层
貌似没写重映像是不会默认完全重映像的吧。。。
回复

使用道具 举报

1

主题

6

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
9692
金钱
9692
注册时间
2016-2-29
在线时间
567 小时
 楼主| 发表于 2016-2-29 17:07:35 | 显示全部楼层
—孤独¥的风 发表于 2016-2-29 16:52
貌似没写重映像是不会默认完全重映像的吧。。。

不是  是没写部分重映射就是http://www.openedv.com/thread-19850-1-1.html
这个帖子上面写的  具体我自己也不大清楚 datasheet上面只找到默认引脚和重映射引脚 没写部分还是完全 现在板子有点急 为了避免麻烦  我用其他端口模拟I2C了
回复

使用道具 举报

0

主题

63

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3867
金钱
3867
注册时间
2015-8-26
在线时间
285 小时
发表于 2016-2-29 18:51:53 | 显示全部楼层
路过看看
回复

使用道具 举报

4

主题

62

帖子

0

精华

高级会员

Rank: 4

积分
788
金钱
788
注册时间
2015-8-21
在线时间
128 小时
发表于 2016-3-1 08:13:31 | 显示全部楼层
6aaaaaa 发表于 2016-2-29 17:07
不是  是没写部分重映射就是http://www.openedv.com/thread-19850-1-1.html
这个帖子上面写的  具体我自 ...

定时器的重映射功能我做过,你给的帖子链接我看了,TIM4是只有两种情况:没有重映射和完全重映射,是没有部分重映射这个功能的。没有重映射是管脚是默认的管脚
回复

使用道具 举报

1

主题

6

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
9692
金钱
9692
注册时间
2016-2-29
在线时间
567 小时
 楼主| 发表于 2016-3-1 11:11:25 | 显示全部楼层
—孤独¥的风 发表于 2016-3-1 08:13
定时器的重映射功能我做过,你给的帖子链接我看了,TIM4是只有两种情况:没有重映射和完全重映射,是没有 ...

是我表述不清楚   反正已经解决了 谢了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 13:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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