OpenEdv-开源电子网

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

定时器TIM3 ch1 完全映射到PC6上面,做输入捕获

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-8-27
在线时间
4 小时
发表于 2015-8-13 17:00:14 | 显示全部楼层 |阅读模式
5金钱

本实验是为了用TIM3映射到PC6上面,做输入捕获,即检测低电平的输入时间。
如果TIM3不映射的话,用PA6是没问题的。
但是映射这个实验,加了几条初始化语句,用串口看到的是一直打印出来65536。
请大神看看哪里出问题了?实在搞不清楚,看手册也觉得没错。


[mw_shl_code=c,true]#include "timer.h" #include "led.h" #include "usart.h" TIM_ICInitTypeDef TIM3_ICInitStructure; void TIM3_Cap_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_AFIODeInit(); GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOC, &GPIO_InitStructure); TIM_DeInit(TIM3); TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler =psc; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM3_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM3_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; TIM3_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM3_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM3_ICInitStructure.TIM_ICFilter = 0x03; TIM_ICInit(TIM3, &TIM3_ICInitStructure); NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_CC1,ENABLE); TIM_Cmd(TIM3,ENABLE ); } u8 TIM3CH1_CAPTURE_STA=0; u16 TIM3CH1_CAPTURE_VAL; void TIM3_IRQHandler(void) { if((TIM3CH1_CAPTURE_STA&0X80)==0) { if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) { if(TIM3CH1_CAPTURE_STA&0X40) { if((TIM3CH1_CAPTURE_STA&0X3F)==0X3F) { TIM3CH1_CAPTURE_STA|=0X80; TIM3CH1_CAPTURE_VAL=0XFFFF; }else TIM3CH1_CAPTURE_STA++; } } if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET) { if(TIM3CH1_CAPTURE_STA&0X40) { TIM3CH1_CAPTURE_STA|=0X80; TIM3CH1_CAPTURE_VAL=TIM_GetCapture1(TIM3); TIM_OC1PolarityConfig(TIM3,TIM_ICPolarity_Falling); }else { TIM3CH1_CAPTURE_STA=0; TIM3CH1_CAPTURE_VAL=0; TIM_SetCounter(TIM3,0); TIM3CH1_CAPTURE_STA|=0X40;     TIM_OC1PolarityConfig(TIM3,TIM_ICPolarity_Rising); } } } TIM_ClearITPendingBit(TIM3, TIM_IT_CC1|TIM_IT_Update); } [/mw_shl_code]



最佳答案

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

原子哥的思路提醒了我,换了下初始化的顺序,还真的就可以了! 正确的顺序如下,管脚映射之前先使能IO口时钟,定时器时钟和复用时钟。 大爱原子哥哈哈 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);   GPIO_AFIODeInit(); GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-8-27
在线时间
4 小时
 楼主| 发表于 2015-8-13 17:00:15 | 显示全部楼层
原子哥的思路提醒了我,换了下初始化的顺序,还真的就可以了!

正确的顺序如下,管脚映射之前先使能IO口时钟,定时器时钟和复用时钟。

大爱原子哥哈哈

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  

GPIO_AFIODeInit();
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);


GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;  //PC6 ?壺眳?扢离  
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //奻嶺 怀?  
GPIO_Init(GPIOC, &GPIO_InitStructure);

TIM_DeInit(TIM3);
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-13 20:03:16 | 显示全部楼层
这两句话:
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE); 

GPIO_AFIODeInit(); 

调个顺序试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-8-27
在线时间
4 小时
 楼主| 发表于 2015-8-14 09:21:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
还是一样啊原子哥
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-8-14 10:41:18 | 显示全部楼层
太好了。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 05:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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