This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR6877:MSP430F437IPN 与 MSP430FR6877 ISR 之间的移植困难

Guru**** 657930 points
Other Parts Discussed in Thread: MSP430FR6877
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1202998/msp430fr6877-msp430f437ipn-to-msp430fr6877-isr-porting-difficulty

器件型号:MSP430FR6877

您好!
我目前正计划将在 MSP430F437IPN 器件上运行的一些代码移植到使用 MSP430FR6877的器件。 大多数其他代码已经过修改、可以在系统上正常工作、但中断服务例程中遇到了一些问题。

 

在原始系统中使用以下方法

BIC.B #WDTIE,&IE1;禁用 WDTI

 ;输出一个脉冲,或检查是否存在内部-
 ;脉冲超时已完成。

 按下 R12  
 按下 R13
 按下 R14
 按下 R15
 调用#Pulse_Output1
 POP R15
 POP R14
 POP R13
 POP R12

 BIS.B #WDTIE,&IE1;启用 WDTI
 示例

 

不过、当基于新 MCU 中的 SFR 进行重新转换时、如下所示:

 

BIC.B #WDTIE,&SFRIE1;禁用 WDTI

 ;输出一个脉冲,或检查是否存在内部-
 ;脉冲超时已完成。

 按下 R12  
 按下 R13
 按下 R14
 按下 R15
 调用#Pulse_Output1
 POP R15
 POP R14
 POP R13
 POP R12

 BIS.B #WDTIE,&SFRIE1;启用 WDTI
 示例

 

我收到 错误[431]:使用不正确的大小访问 SFR

在包含 BIC.B #WDTIE、&SFRIE1;禁用 WDTI 和  BIS.B #WDTIE、&SFRIE1;启用 WDTI 的行上

你会不会碰巧知道出了什么问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据用户指南(SLAU367P)表1-12、SFRIE1期望字访问、因此您可能想要类似的内容:

    > BIS.W #WDTIE,&SFRIE1;启用 WDTI

    示例 msp430fr69xx_wDT_01.asm 可能很有用:

    https://dev.ti.com/tirex/explore/node?node=A__AOPVFthea1ToO1YQYxIF6A__msp430ware__IOGqZri__LATEST

    [编辑:少量重新措辞。]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!

    我将实施此更改并与您联系。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    按用户指南(SLAU367P)表1-12,SFRIE1期望字访问,因此您可能需要类似的内容:

    器件头文件包括:

    #define __MSP430_BASEADDRESS_SFR__ 0x0100
    #define SFR_BASE               __MSP430_BASEADDRESS_SFR__
    
    sfr_w(SFRIE1);                                /* Interrupt Enable 1 */
    sfr_b(SFRIE1_L);                              /* Interrupt Enable 1 */
    sfr_b(SFRIE1_H);                              /* Interrupt Enable 1 */
    
    

    SFRIE_L 是用于字节访问的寄存器。