查看: 2560|回复: 1

[CodeWarrior] MC56f84763 CW生成代码与参考手册不符

[复制链接]

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2017-12-19
发表于 2017-5-9 15:27:03 | 显示全部楼层 |阅读模式
本帖最后由 夜凉好摘星 于 2017-5-10 12:31 编辑

       请教下:利用pe自动生成的底层地址分配与参考手册不符:自动生成的代码有两个寄存器(PWMA_FCTRL1与PWMA_FCTRL20)的地址是重复的均为0x0000E6CA,而在芯片的参考手册中两者的地址却是E6CA PWMA_FCTRL20,本来觉得是代码写错了,但是值得注意的是这里的代码用到了一个union将两个寄存器的地址映射到了一起,让人感觉是故意这样做。
       在自动生成的代码下我通过修改PWMA_FCTRL1或PWMA_FCTRL20其中一个的数值,然后进入debug模式下观察对应寄存器的值,确实是两个寄存器的数值始终是相同,验证了两者的内存地址确实是一样的,但是这与参考手册中不符,请问这处怎么理解呢?不甚感激。

存疑代码:
  /*** PWMA_FCTRL1 - Fault Control Register; 0x0000E6CA ***/
  /*** PWMA_FCTRL20 - Fault Test Register; 0x0000E6CA ***/

  union {
    union {
      word Word;
    } PWMA_FCTRL1_STR;
    union {
      word Word;
    } PWMA_FCTRL20_STR;
  } PWMA_FCTRL1_PWMA_FCTRL20_STR;


  #define PWMA_FCTRL1_FIE0_MASK         0x01U
  #define PWMA_FCTRL1_FIE1_MASK         0x02U
  #define PWMA_FCTRL1_FIE2_MASK         0x04U
  #define PWMA_FCTRL1_FIE3_MASK         0x08U
  #define PWMA_FCTRL1_FSAFE0_MASK       0x10U
  #define PWMA_FCTRL1_FSAFE1_MASK       0x20U
  #define PWMA_FCTRL1_FSAFE2_MASK       0x40U
  #define PWMA_FCTRL1_FSAFE3_MASK       0x80U
  #define PWMA_FCTRL1_FAUTO0_MASK       0x0100U
  #define PWMA_FCTRL1_FAUTO1_MASK       0x0200U
  #define PWMA_FCTRL1_FAUTO2_MASK       0x0400U
  #define PWMA_FCTRL1_FAUTO3_MASK       0x0800U
  #define PWMA_FCTRL1_FLVL0_MASK        0x1000U
  #define PWMA_FCTRL1_FLVL1_MASK        0x2000U
  #define PWMA_FCTRL1_FLVL2_MASK        0x4000U
  #define PWMA_FCTRL1_FLVL3_MASK        0x8000U
  #define PWMA_FCTRL1_FIE_MASK          0x0FU
  #define PWMA_FCTRL1_FIE_BITNUM        0x00U
  #define PWMA_FCTRL1_FSAFE_MASK        0xF0U
  #define PWMA_FCTRL1_FSAFE_BITNUM      0x04U
  #define PWMA_FCTRL1_FAUTO_MASK        0x0F00U
  #define PWMA_FCTRL1_FAUTO_BITNUM      0x08U
  #define PWMA_FCTRL1_FLVL_MASK         0xF000U
  #define PWMA_FCTRL1_FLVL_BITNUM       0x0CU
  #define PWMA_FCTRL1                   (*((volatile word *)0x0000E6CA))

  #define PWMA_FCTRL20_NOCOMB0_MASK     0x01U
  #define PWMA_FCTRL20_NOCOMB1_MASK     0x02U
  #define PWMA_FCTRL20_NOCOMB2_MASK     0x04U
  #define PWMA_FCTRL20_NOCOMB3_MASK     0x08U
  #define PWMA_FCTRL20_NOCOMB_MASK      0x0FU
  #define PWMA_FCTRL20_NOCOMB_BITNUM    0x00U
#define PWMA_FCTRL20                  (*((volatile word *)0x0000E6CA))
参考手册对应部分:



我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

0

主题

4

帖子

0

新手上路

Rank: 1

积分
12
最后登录
2017-9-27
发表于 2017-9-27 15:19:16 | 显示全部楼层
PWMA_FCTRL20这个寄存器其实是无效的,所以芯片里并没有这个寄存器描述的功能。请按照PE的寄存器定义来做,手册的确有些问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 16:13 , Processed in 0.083903 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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