OpenEdv-开源电子网

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

战舰开发板电容触摸按键程序中的捕获问题

[复制链接]

7

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2016-4-27
在线时间
29 小时
发表于 2016-4-27 13:38:38 | 显示全部楼层 |阅读模式
1金钱
2.库函数版本
u16 TPAD_Get_Val(void)
{      
TPAD_Reset();
while(TIM_GetITStatus(TIM5, TIM_IT_CC2) != RESET)//等待溢出( 或用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_GetITStatus(TIM5, TIM_IT_CC2) != RESET这个函数就不对把,因为没开中断,if ((itstatus != (uint16_t)RESET) && (itenable != (uint16_t)RESET))
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}他永远都是reset,根本执行这个while语句,所以把return TIM_GetCapture2(TIM5)放在while循环里面就永远没有返回值,但是为什么用这个语句却还好使呢?怎么检测到有按键按下的啊?不是应该进入这个函数就直接返回return TIM_GetCapture2(TIM5)了么?
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)
{
  ITStatus bitstatus = RESET;  
  uint16_t itstatus = 0x0, itenable = 0x0;
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
  assert_param(IS_TIM_GET_IT(TIM_IT));

  itstatus = TIMx->SR & TIM_IT;

  itenable = TIMx->DIER & TIM_IT;
  if ((itstatus != (uint16_t)RESET) && (itenable != (uint16_t)RESET))
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}

最佳答案

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

我知道为什么了,原子最开始的程序代码是不对的,根本没有捕获到上升沿,而是一直读取counter的值,把while删掉,程序一样好使
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2016-4-27
在线时间
29 小时
 楼主| 发表于 2016-4-27 13:38:39 | 显示全部楼层
我知道为什么了,原子最开始的程序代码是不对的,根本没有捕获到上升沿,而是一直读取counter的值,把while删掉,程序一样好使
回复

使用道具 举报

354

主题

1475

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8093
金钱
8093
注册时间
2015-10-15
在线时间
2918 小时
发表于 2016-4-28 12:58:03 | 显示全部楼层
TIM_GetITStatus 改为 TIM_GetFlagStatus 。这个貌似V3早已经改了。您是V几的版本?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2016-4-27
在线时间
29 小时
 楼主| 发表于 2016-4-28 15:45:43 | 显示全部楼层
openedvadmin 发表于 2016-4-28 12:58
TIM_GetITStatus 改为 TIM_GetFlagStatus 。这个貌似V3早已经改了。您是V几的版本?

我的历程是改过了,我只是在这个地方有点疑问,然后看的帖子,就被误导了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 16:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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