OpenEdv-开源电子网

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

为什么触摸按键的TIM5_CH2捕获的程序里没有开中的操作

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-6-24
在线时间
1 小时
发表于 2016-6-24 21:57:26 | 显示全部楼层 |阅读模式
本帖最后由 liuliang3093 于 2016-6-24 22:00 编辑

//定时器5通道2输入捕获配置
void TIM5_CH2_Cap_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef  GPIO_InitStructure;
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_ICInitTypeDef  TIM5_ICInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);  //使能TIM5时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能PA端口时钟
//设置GPIOA.1为浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;     //PA1 端口配置
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;  //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);  //设置为浮空输入

    //初始化TIM5  
TIM_TimeBaseStructure.TIM_Period = arr; //设定计数器自动重装值   
TIM_TimeBaseStructure.TIM_Prescaler =psc;  //预分频器     
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
//初始化通道2
   TIM5_ICInitStructure.TIM_Channel = TIM_Channel_2; //CC1S=01  选择输入端 IC2映射到TI5上
   TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获
   TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
   TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;  //配置输入分频,不分频
   TIM5_ICInitStructure.TIM_ICFilter = 0x03;//IC2F=0011 配置输入滤波器 8个定时器时钟周期滤波
   TIM_ICInit(TIM5, &TIM5_ICInitStructure);//初始化I5 IC2

    TIM_Cmd(TIM5,ENABLE );  //使能定时器5
}
为什么这里没有开中断的操作
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
37
金钱
37
注册时间
2014-1-18
在线时间
3 小时
发表于 2016-11-12 22:05:34 | 显示全部楼层
我也发现这个问题了,请问弄清楚了吗
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-7-27
在线时间
0 小时
发表于 2018-7-27 14:37:07 | 显示全部楼层
我也有同样的疑问。如果没用到中断,那么在
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-7-27
在线时间
0 小时
发表于 2018-7-27 14:40:36 | 显示全部楼层
我也有同样的疑问。如果没用到中断,那么在u16 TPAD_Get_Val(void) {                                            TPAD_Reset();         while(TIM_GetFlagStatus(TIM5, TIM_IT_CC2) == RESET)//等待捕获上升沿         {                 if(TIM_GetCounter(TIM5)>TPAD_ARR_MAX_VAL-500)return TIM_GetCounter(TIM5);//超时了,直接返回CNT的值         };                 return TIM_GetCapture2(TIM5);          中 这个函数TIM_GetFlagStatus(TIM5, TIM_IT_CC2)还能用吗
回复 支持 反对

使用道具 举报

31

主题

1954

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4513
金钱
4513
注册时间
2018-5-11
在线时间
945 小时
发表于 2018-7-27 17:30:42 | 显示全部楼层
没有具体用过这个程序,不过,从理论上来说,不开中断而采取人工查询的方式也是可行的。很多外设或芯片都有中断功能,并有中断标志位。不开中断只不过是不引发系统中断了,但人工还是可以随时查询这些中断标志位的。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-7-8
在线时间
8 小时
发表于 2019-7-30 00:34:01 | 显示全部楼层
35        PA1        RMII_REF_CLK                N        接LAN8720的REFCLKO脚        该IO直接接LAN8720的REFCLKO引脚,接收50M时钟(一直有),不建议做普通IO用
  PA1 不可以用作其他用途
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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