OpenEdv-开源电子网

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

F4实现用定时器计脉冲个数问题

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-3-31
在线时间
0 小时
发表于 2015-4-1 22:01:12 | 显示全部楼层 |阅读模式
5金钱
 就是通过定时器想读取输入脉冲个数  
函数是照着F1的基本设置配置的 昨天原子哥也给了输入浮空的配置 可 搞了很久也没读出数据来。用TIM5读PA0的脉冲个数 按道理可以实现的啊?难道是我哪里没配置成功? 
[mw_shl_code=c,true]void TIM5_CH1_Cap_Init(u32 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; TIM_ICInitTypeDef TIM5_ICInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); //TIM5时钟使能 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能PORTA时钟 //实现PA0输入浮空 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//复用功能输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //nopull GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0 TIM_TimeBaseStructure.TIM_Prescaler=psc; //定时器分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure); TIM_TIxExternalClockConfig(TIM5,TIM_TIxExternalCLK1Source_TI1,TIM_ICPolarity_Rising,0);//TIM5设为外部时钟 触发 TIM_SetCounter(TIM5, 0); TIM_Cmd(TIM5,ENABLE ); //使能定时器5 }[/mw_shl_code]


最佳答案

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

经过很久的尝试 终于解决了 发现 F4中这个复用函数GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM5);太重要了 原先以为TIM5本身就挂在PA0上所以就像F1一样不需要再去设置复用为TIM5 后来试着配置了下 确实需要 检测脉冲确实是需要用输入浮空  问题解决 谢谢原子哥的帮助   [mw_shl_code=c,true]GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;// ...
嬉皮笑脸面对程序的难
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-3-31
在线时间
0 小时
 楼主| 发表于 2015-4-1 22:01:13 | 显示全部楼层
经过很久的尝试 终于解决了 发现 F4中这个复用函数GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM5);太重要了 原先以为TIM5本身就挂在PA0上所以就像F1一样不需要再去设置复用为TIM5 后来试着配置了下 确实需要 检测脉冲确实是需要用输入浮空 
问题解决 谢谢原子哥的帮助  
[mw_shl_code=c,true]GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不上拉不下拉 就是浮空输入了 GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0 GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM5);[/mw_shl_code]
恩 就是这么简单的配置 搞了我一天 
嬉皮笑脸面对程序的难
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-1 23:08:54 | 显示全部楼层
你做输入脉冲计数,应该选择复用功能才对。
你设置浮空估计不行
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-3-31
在线时间
0 小时
 楼主| 发表于 2015-4-1 23:38:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
复用功能 然后PA0的输入浮空还要设置的吧?还是如上的设法吗? 这样就可以了吗?都不知道怎么设置了 原子哥是不是都有官方列程的啊? 不然一些函数真不知怎么用
嬉皮笑脸面对程序的难
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-2 00:34:30 | 显示全部楼层
回复【3楼】硅谷传奇:
---------------------------------
试试复用上拉输入
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-2 22:57:11 | 显示全部楼层
回复【5楼】硅谷传奇:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-10-29
在线时间
15 小时
发表于 2017-4-14 17:33:17 | 显示全部楼层
楼主可以分享一下中断服务程序吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 01:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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