这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 在AURIXTC397XE上设置OLDAENBit时遇到的问题求解

共4条 1/1 1 跳转至

在AURIXTC397XE上设置OLDAENBit时遇到的问题求解

工程师
2024-02-06 22:10:35     打赏

我遇到了一个不寻常的问题。 我正在尝试设置 AURIX TC397XE 的 OLDAEN 位,以防止在写入 OLDA 内存范围时生成陷阱。
为了实现这一目标,我创建了一个桥接控制寄存器的结构和一个联合结构。 然后,我将 DOM0_BRCON 指针定义为指向 BRCON 寄存器的地址。
在 osee_tc_core0_start 例程中,我调用了函数 osee_tc_set_olda_enable ()。 但是,我总是遇到陷阱,而且 OLDAEN 位没有设置。
我不确定我是否遗漏了什么,或者我的方法是否有任何错误。
typedef struct OsEE_tc_DOM_BRCON_bits_tag
{
    unsigned int OLDAEN:1;        /**< [0:0] Online Data Acquisition Enable - OLDAEN (rw) */
    unsigned int reserved_1:5;    /**< [5:1] internal Reserved */
    unsigned int reserved_6:1;    /**< [6:6] internal Reserved */
    unsigned int reserved_7:2;    /**< [8:7] internal Reserved */
    unsigned int reserved_9:2;    /**< [10:9] internal Reserved */
    unsigned int reserved_11:2;    /**<[12:11] internal Reserved */
    unsigned int reserved_13:7;    /**<[19:13] internal Reserved */
    unsigned int reserved_20:12;    /**<[31:20] internal Reserved */
} OsEE_tc_DOM_BRCON_bits;
typedef union
{
OsEE_reg                reg;   /* Register access */
OsEE_tc_DOM_BRCON_bits  bits;  /* Bitfield access */
} OsEE_tc_DOM_BRCON;

#define DOM0_BRCON  (*(volatile OsEE_tc_DOM_BRCON*)0xF8700430u)

OSEE_STATIC_INLINE void OSEE_ALWAYS_INLINE  /* static inline void __attribute__((always_inline)) */
osEE_tc_set_olda_enable()
{
DOM0_BRCON.bits.OLDAEN = 1U;
}




关键词: AURIX     TC397XE     OLDAEN     bit    

助工
2024-02-06 22:11:25     打赏
2楼

对于你描述的问题,有几个可能的原因导致 OLDAEN 位没有被正确地设置。

首先,请确保你在正确的地址上操作 BRCON 寄存器。你可以通过打印 DOM0_BRCON 的地址和值来进行验证。确保 BRCON 寄存器的地址和你定义的 DOM0_BRCON 指针是一致的。BRCON 寄存器需要 32 位访问权限
其次,确认你的结构和联合定义是正确的。请确保 OLDAEN 位在 BRCON 寄存器中的正确位置,并且没有被其他位覆盖或移位。

此外,确保你在 osee_tc_set_olda_enable() 函数中正确设置 OLDAEN 位。可以使用位掩码操作来设置或清除 OLDAEN 位,而不是直接赋值。

最后,检查你的代码中是否使用了正确的寄存器访问方式。根据 AURIX TC39x 处理器的规格,可能需要使用特定的访问方式(例如使用位字段或原子操作)来设置 BRCON 寄存器的位。


高工
2024-02-08 07:56:59     打赏
3楼

感谢分享


专家
2024-02-08 09:36:27     打赏
4楼

谢谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]