OpenEdv-开源电子网

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

怎样从库函数结构体中知道操作的什么寄存器

[复制链接]

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
发表于 2014-11-9 19:28:01 | 显示全部楼层 |阅读模式
5金钱
如题:从库函数的各函数可以很容易的跟踪到所操作的寄存器,
          但是从库函数的结构体中怎么知道它操作的是哪个寄存器呢?
        求指点?

例如:T3的输入捕获程序。
//定时器3通道4输入捕获配置

TIM_ICInitTypeDef  TIM3_ICInitStructure;
void TIM3_Cap_Init(u16 arr,u16 psc)
{
  TIM3_ICInitStructure.TIM_Channel = TIM_Channel_4;
  TIM3_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获
  TIM3_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1上
  TIM3_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频 
  TIM3_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 配置输入滤波器 不滤波
  TIM_ICInit(TIM3, &TIM3_ICInitStructure);
……
……
}


第一步:通过 “TIM_ICInitTypeDef  TIM3_ICInitStructure;” 跟踪到如下结构体
typedef struct
{
  uint16_t TIM_Channel;      /*!< Specifies the TIM channel.                                 
  uint16_t TIM_ICPolarity;   /*!< Specifies the active edge of the input signal.                                
  uint16_t TIM_ICSelection;  /*!< Specifies the input.                                 
  uint16_t TIM_ICPrescaler;  /*!< Specifies the Input Capture Prescaler.                                
  uint16_t TIM_ICFilter;    
} TIM_ICInitTypeDef;

第二步:好像没法往下跟踪了,跟踪TIM_Channel 出现很多
再怎么搞才能跟踪到它具体操作什么寄存器呢?

最佳答案

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

必须跟踪最终的执行函数,比如:TIM_ICInit 才可以查到,你直接看库函数的结构体定义,没什么太大意义。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-9 19:28:02 | 显示全部楼层
必须跟踪最终的执行函数,比如:TIM_ICInit
才可以查到,你直接看库函数的结构体定义,没什么太大意义。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2014-11-9 19:28:02 | 显示全部楼层
找到了,谢谢原子大哥
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2014-11-9 19:52:41 | 显示全部楼层
按原子大哥的提示跟踪到TIM_ICInit。

void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
{
  /* Check the parameters */
  assert_param(IS_TIM_CHANNEL(TIM_ICInitStruct->TIM_Channel));  
  assert_param(IS_TIM_IC_SELECTION(TIM_ICInitStruct->TIM_ICSelection));
  assert_param(IS_TIM_IC_PRESCALER(TIM_ICInitStruct->TIM_ICPrescaler));
  assert_param(IS_TIM_IC_FILTER(TIM_ICInitStruct->TIM_ICFilter));
  
  if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM2) || (TIMx == TIM3) ||
     (TIMx == TIM4) ||(TIMx == TIM5))
  {
    assert_param(IS_TIM_IC_POLARITY(TIM_ICInitStruct->TIM_ICPolarity));
  }
  else
  {
    assert_param(IS_TIM_IC_POLARITY_LITE(TIM_ICInitStruct->TIM_ICPolarity));
  }
  if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1)
……
……
}
还是不知道哪个寄存器啊?再次指点
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-9 21:25:05 | 显示全部楼层
回复【3楼】laoguren1122:
---------------------------------
 你后面的省略号里面。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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