OpenEdv-开源电子网

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

如何查找库函数所对应的寄存器

[复制链接]

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2016-6-5
在线时间
53 小时
发表于 2016-9-5 00:06:29 | 显示全部楼层 |阅读模式
1金钱
如何查找库函数所对应的寄存器,有些地方库函数不是很明白,需要找到寄存器对照开发指南才能明白,求怎么查找库函数对应的寄存器方法

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-9-5 08:48:12 | 显示全部楼层
跟踪到库函数里面就可以看到他具体操作哪些寄存器
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-9-5 09:09:48 | 显示全部楼层
如果IDE支持跳转的话直接右击那个寄存器,有个选项一般叫definition什么,点一下可以跳转到定义这个寄存器的地方

如果IDE不支持的话就用全局搜索找一下出现这个寄存器的地方,这个方法比较麻烦,但是如果耐心的话可以在过程中发现很多有趣的东西。
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-9-5 09:31:00 | 显示全部楼层
最简单的方法是在线调试  然后单步   开着寄存器外设   看那里值变了  就是对应的什么
回复

使用道具 举报

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2016-6-5
在线时间
53 小时
 楼主| 发表于 2016-9-5 12:41:28 | 显示全部楼层
Da Wen 发表于 2016-9-5 08:48
跟踪到库函数里面就可以看到他具体操作哪些寄存器

那个进去不是一个结构体吗?看不到具体的寄存器啊
回复

使用道具 举报

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2016-6-5
在线时间
53 小时
 楼主| 发表于 2016-9-5 12:49:32 | 显示全部楼层
Da Wen 发表于 2016-9-5 08:48
跟踪到库函数里面就可以看到他具体操作哪些寄存器

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)
  {
    assert_param(IS_TIM_LIST8_PERIPH(TIMx));
    /* TI1 Configuration */
    TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);
    /* Set the Input Capture Prescaler value */
    TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_2)
  {
    assert_param(IS_TIM_LIST6_PERIPH(TIMx));
    /* TI2 Configuration */
    TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);
    /* Set the Input Capture Prescaler value */
    TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3)
  {
    assert_param(IS_TIM_LIST3_PERIPH(TIMx));
    /* TI3 Configuration */
    TI3_Config(TIMx,  TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);
    /* Set the Input Capture Prescaler value */
    TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
  else
  {
    assert_param(IS_TIM_LIST3_PERIPH(TIMx));
    /* TI4 Configuration */
    TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,
               TIM_ICInitStruct->TIM_ICSelection,
               TIM_ICInitStruct->TIM_ICFilter);
    /* Set the Input Capture Prescaler value */
    TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);
  }
}
这就是进去的函数,然后怎么弄?
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-9-5 13:48:08 | 显示全部楼层
247470035 发表于 2016-9-5 12:49
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
{
  /* Check the paramet ...

进到这里就函数一步步看了这函数是分情况进一步调用更底层的库函数,进去里面就有操作到哪些寄存器。
{H))TP99A87LMQJV%~L6H.png
再进去这些函数就可以看到操作什么寄存器什么位了。
回复

使用道具 举报

31

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2016-6-5
在线时间
53 小时
 楼主| 发表于 2016-9-5 14:23:13 | 显示全部楼层
Da Wen 发表于 2016-9-5 13:48
进到这里就函数一步步看了这函数是分情况进一步调用更底层的库函数,进去里面就有操作到哪些寄存器。 ...

哦,了解了,谢谢啊!
回复

使用道具 举报

2

主题

394

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2093
金钱
2093
注册时间
2012-5-8
在线时间
312 小时
发表于 2016-9-6 11:49:15 | 显示全部楼层
追函数进函数看看怎么操作的,一般库函数都是使用结构体的数据结构。
回复

使用道具 举报

1

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2016-8-15
在线时间
20 小时
发表于 2016-9-7 08:34:33 | 显示全部楼层
跟踪啊啊
回复

使用道具 举报

3

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2016-2-18
在线时间
50 小时
发表于 2016-9-7 09:06:08 | 显示全部楼层
右键 go to definition
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 12:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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