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.

[参考译文] CCS/MSP430FR5972:Simple main.c - MPU 问题...

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/722597/ccs-msp430fr5972-simple-main-c---mpu-problem

器件型号:MSP430FR5972
主题中讨论的其他器件: MSP430WAREMSP430FR6972MSP-TS430PM64FMSP-EXP430FR6989MSP430FR5969

工具/软件:Code Composer Studio

大家好!

1) 1)清除 CCS 8.1.0的安装

2) 2)创建"simple main.c program:

#include 


/**
* main.c
*/
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时

器返回0;
}

2)编译此代码:-vmsp --code_model=small --data_model=small -O4 --opt_for_speed=5 --use_hw_mpy=32 --include_path="C:/ti/ccs8/ccsv8/ccs_base/msp430/include --include_path="C:/alex/ti/workspace_v8/ZU_v7_FR5972 --include_path="C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include --use_hw_erratias=u=us_support=us_errati_atia-us_atia-display_off-us=us_erratina-us_support=us_errati_ati_atia-us=us=us_code_display_guia-us=us_erratina-us_off-us_code_display_cp2=us_support=us_erratina-us_atina-us_off-us_erratina-us_support=cep=us_errani_cp

链接器标志:-vmsp --code_model=small --data_model=small -o4 --opt_for_speed=5 --use_hw_mpy=32 --advice:power-advice:hw_config=all --define=_sp430FR5972_--define=_support/capsility=/ti/ccs8/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx /ti/ccs8/ccsv8/ccs_base/msp430/lib/FR59xx /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include --ipt_ipt_cpu_off-upd_cpu_ature=-up_cpu_ature=-ment-track_up_up_codest-/ti/ccs8/ccsv8/ccs_base/msp430/include /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib --ature=cature=-up_up_up_up_cpu_ature=ine-ment-track_codest-up_up_up_up_codest-up_ine-over-dag-over-dag=cine-over-dag_codest-up_cpu_up_codest-ature=ine-si-f_codest-ature=cine-ov_cpu_codest-ine-ov_up_codest-ature=cine-ex-ine-ov_codest-

结果- 7个错误

****为项目 ZU_v7_FR5972构建配置版本**"C

:\\ti\\ccs8\\ccsv8\\utils\\bin\\gmake"-k -j 8 all -O

构建文件:"../main.c"
调用:MSP430编译器
"C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 /ti/ccs8/ccsv8/ccs_base/msp430/include /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include -code_model=cn_cn_cn=-optimine_-cn=-cn_opt_cn=-optimine_cn=-opt_opt_enable-board-cn=-opt_opt_cn_cn=-opt-optiminature=&=-opt_us-cn_cn_cn_cn_cn_cn_cn_cn=-opt-opt-opt-target=&=-optiminature=&=-content_cn=-opt-cn_cn_cn_cn_cn_cn_cn=&content-opt-opt-optiminateginature=&=-content_cn_cn_cn_cn_cn_/alex/ti/workspace_v8/ZU_v7_FR5972 diag_warning=225 --diag_wrap=off --display_error_number --silicon_errater=cpu21 --silicon_errater=cpu22 --silicon_errater=cpu40 --preproc_with_compile --preproc_dependence="main./main.c"
已完成构建:"./main./main.c"=v72=vulk_support=msp_support=msp430_support=msp_support=msp_all-f_support=msp_support=msp430_en_building_dominating_dominating_det_en_support=us-f_ominating_domination=-f_support=us-target=us-target=-target=-target=v72=v72=us_support=us-target_support_support=us-target=us-target=-target=vulation_siminature_building_



/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 tag_wrap=off --display_error_number --silicon_errater=cpu21 --silicon_errater=cpu22 --silicon_errat=cpu40 -z -m"zu_v7_FR5972.map"--heap_size=160 --cilit_hold_wd=on -libu_lib_line-expb.ip_info-model -/ti/ccs8/ccsv8/ccs_base/msp430/include /ti/ccs8/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx -cmp_lib_lib_lib_libnat_infot.ip_lib-/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib ---libu_libu.ipt.pru_infot_infot_infot_lib_lib_lib_lib_lib-m.ip.ip_lib_infot_lib-m.ip.ipt -m.ipc.ina.i_infot_infot_infot_infot_lib--m.ip_lib_lib_infot_lib_infot_lib_infot_lib-m.c.ina.m.c.ina.m.ipt -link_lib_infot_infot_lib_lib /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include /ti/ccs8/ccsv8/ccs_base/msp430/lib/FR59xx

>>警告:--use_hw_mpy 编译器设置(32)与链接器设置(F5)不匹配。 这两个选项都将设置为编译器设置。
警告#10204-D:无法将索引库"libmpu_init.a"解析为兼容库
警告#10204-D:无法将索引库"libmath.a"解析为兼容库
警告#10420-D:对于 FRAM 器件、启动时需要禁用 GPIO 上电默认高阻抗模式、以激活先前配置的端口设置。 这可以通过清零 PM5CTL0寄存器中的 LOCKLPM5位来完成。
备注#10371-D:(ULP 1.1)未检测到低功耗模式状态更改指令
备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 A。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 B。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 C。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 D。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 E。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。

>>编译失败
makefile:143:目标'ZU_v7_FR5972.out'的配方失败

未定义的第一个引用
符号 文件中
------ --------
MPUSEG 
_mpusam 
_mpuseg 

错误#10234-D:未解析的符号仍然
存在错误#10010:链接期间遇到错误;"ZU_v7_FR5972.out"未生成
gmake[1]:***[ZU_v7_FR5972.out]错误1
gmake:***[All]错误2
makefile:139:目标'All'的配方失败

****构建完成

那么,我的错了吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    不确定、您要做什么? 它只是测试一个基本代码示例、作为 CCS 安装的初始测试吗?

    此致
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CCS 8.1.0已经使我厌倦了不断无法理解的错误。
    :-)

    我通常不能在程序中使用 MPU、因为这些常量错误的存在、即使我允许编译器以自己的方式做出"复杂的自己决定"、这也是我决定查看一个简单的示例的原因。

    我想了解发生了什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    我很抱歉。 我希望我们对此有一个非常简单的解决方案。
    请按照以下步骤操作。
    1.设置新的工作区。
    2.进入 Resource Explorer。
    3.选择"软件>> MSP430Ware - v.3.80.02.10 >>器件>> MSP430FR5XX_6XX >> MSP430FR5972 >>外设示例>>寄存器级"
    4.有两个 MPU 代码示例 msp430fr6x7x_MPU_01.c 和 msp430fr6x7x_MPU_02.c 单击其中一个、然后单击符号的右上角以导入 IDE。这将使用此示例自动创建项目。

    我刚用第一个尝试了它、它在编译时没有错误。

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

    我这么做- msp430fr6x7x_MPU_02.c

    结果:

    ///

    ***"C:\\ti\\ccs8\\utils\\bin\\gmake"
    
    -k -j 8 all -O
    
    building file:"../msp430fr6x7x_mpu_02.c"-cn_membe_advice -cn=cn_cn/msp430_model=cn=cn_cn_cn/msp430fr_b_support=-cn_cn=-cn_cn_cn_cn/msp430fr-board_b&dimplin=-cn=-cn=-cn_cn=cn_cn_cn_cn_cn=-cn=-cn_cn_cn_cn=-cn/msp430fr-board_cn_cn_cn_cn_cn=-cn_cn_cn_cn_cn/msp430fr-board.cn_cn_cn=-cn_cn_cn_cn_cn=-cn/msp430fr-cn=-cn=-cn_cn_cn_cn/msp430fr-board.cn_cn_cn_cn_cn_cn_cn_cn
    
    /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include /alex/ti/workspace_v8/msp430fr6x7x_mpu_02.c /ti/ccs8/ccsv8/ccs_base/msp430/include /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 diag_wrap=off --display_error_number --silicon_errates=cpu21 --silicon_errates=cpu22 --silicon_errates=cpu40 --preproc_with_compile --preproc_dependence="msp430fr6x7x_mpu_02.d_ray""./msp4306x7x_compile"
    ,使用 MPU 标记进行轮询:"msp430fr6x2.x_mpu_pru.2.x_msp430d_pru.pru.pru.pru.pru.c:msp430c 建议使用一个与 ENTER LPMx 和 ISR
    "../msp430fr6x7x_MPU_02.c"相结合的中断、第93行:备注#1527-D:(ULP 2.1)使用_DELAY_CYCLLES 检测到了 SW 延迟环路。 建议使用计时器模块代替
    "../msp430fr6x7x_MPU_02.c"、第116行:备注#1527-D:(ULP 2.1)检测到使用空循环的 SW 延迟环路。 建议使用计时器模块进行
    构建:"../msp430fr6x7x_MPU_02.c"
    
    构建目标:"msp430fr6x7x_MPU_02.c.out"
    调用:MSP430链接
    器"C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 -vmsp -code_model=small --data_model=small --use_hw_errati_b_support/-msp430_code_display=mv2=msp430_cru=-f_support/-f=v_code_silit_support/-f=v_cpu=v_us_code_display-mv2-f=m_codag=v_us_support/-f=msp430_codag=v_codag=-m-f=v_us_code_support/-f=msp430_codag=mv_codem-f=v_codag=v-msp430_up_code_silit_-m=-mag=v_up_up_code_display-mag=- heap_size=160 -stack_size=160 -cinit_hold_wDT=on -i"C:/ti/ccs8/ccsv8/ccs_base/msp430/include -i"C:/ti/ccs8/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx -i"C:/ti/ccs8/ccsv8/ccs_base/msp430/lib/FR59xx -i"C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib -i"C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include -priority -reread_libs -define=_mpu_enable ---6x4brom_ram_ram_ram_ram_ram_ram_zh-mp_ram_ram_ram_ram_ram_ram_ram_ram_ram_zh-cn/zh-mp_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_zh-mp_ram_ram_ram_ram_ram_ram_zh-cn/zh-cn/zh-mpu.mp_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_ram_zh-cn/zh-cn/zh-cn/zh-cn/zh-cn/zh-cn/zh-mp_ram_ram_ram_
    
    警告#10204-D:无法将索引库"libmath_init.a"解析为兼容库
    警告#10204-D:无法将索引库"libmath.a"解析为
    
    首次引用的未定义兼容库
    符号 文件中
    ------ --------
    MPUSEG C:\ti\ccs8\ccsv8\tools\compiler\ti-cgt-msp430_18.1.3LTS \lib\rts430_eabi.lib 
    _mpusam C:\ti\ccs8\ccsv8\tools\compiler\ti-cgt-msp430_18.1.3.LTS \lib\rts430_eabi.lib 
    _mpuseg C:\ti\ccs8\ccsv8\tools\compiler\ti-cgt-msp430_18.1.3.LTS \lib\rts430_eabi.lib 
    
    备注#10371-D:(ULP 1.1)未检测到低功耗模式状态的使用更改指令
    错误#10234-D:未解析的符号保持
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 A。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 B。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 C。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 D。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 E。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    
    >>编译失败
    makefile:143:目标'msp430fr6x7x_MPU_02.c.out'的配方失败
    错误#10010:链接期间遇到错误;"msp430fr6x7x_MPU_02.c.out"未生成
    gmake[1]:***[msp430fr6x7x_MPU_02.c.out"未生成 gmakefile
    
    :*****[msp430fr6x7x_MPU_02.c.out]生成所有目标文件失败的错误***[gmakefile:**1.139]:
    
    生成失败
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不明白为什么在新项目的设置中经常暴露"mspx"、因为在所有说明中、它不适用于16位架构 MSP430FR5972和20位!
    内存模型始终暴露在"大"环境中、而不是"小"环境中! 大型机型适用于割草机(!) 64K FRAM (闪存)!

    我不认为自己是个水壶,我知道应该立即纠正这个问题以获得工作代码,但还有一些人还没有完全了解 MSP430的架构...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、

    切换到 TI v16.9.8.LTS 编译器版本
    2.关闭 Project Properties 中的 MPU。

    5972基于20位总线架构、因此、在大多数情况下、您应该保持 mspx 开启。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    您是否确实使用了导入函数? 我刚刚尝试过代码示例、在导入后立即对其进行编译。

    ****项目 msp430fr6x7x_MPU_02.c 的配置调试构建****

    "C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 8 all -O

    构建文件:"../msp430fr6x7x_MPU_02.c"
    调用:MSP430编译器
    "c:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 -vmspx --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv8/ccs_base/msp430/include --include_path="C:/Users/a0197246/Daten/CCS8_1/E2E/FR5972/msp430fr6x7x_mpu_02.c --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include --use_path="C:--advice:power=all --advice:hw_config=all --include_erratison="_common_support/capsilitse-support/capsisits=p6x2_datisit_cpu_cpu_support/capsi-from-support/capsilitive-proc -support/capsilit_cpu_cpu_cpu_cpu_support/capsilitive-support/capsisit_probulsi-f_probulsi-support/capsi-f_cpu_probulsi-f_cpu_probulsi-support/capsilit_cpu_cpu_cpu_probulsilit_probulsi-support/
    "../msp430fr6x7x_MPU_02.c"、第90行:备注#1528-D:(ULP 3.1)使用 MPUSEG2IFG 检测到的标志轮询。 建议使用一个与进入 LPMx 和 ISR 组合的中断
    "../msp430fr6x7x_MPU_02.c"、第93行:备注#1527-D:(ULP 2.1)使用_DELAY_CYCLES 检测到 SW 延迟环路。 建议改用计时器模块
    "./msp430fr6x7x_MPU_02.c"、第116行:备注#1527-D:(ULP 2.1)使用空循环检测到 SW 延迟循环。 建议改用计时器模块
    完成构建:"../msp430fr6x7x_MPU_02.c"

    构建目标:"msp430fr6x7x_MPU_02.c.out"
    调用:MSP430链接器
    "c:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 /ti/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx /ti/ccsv8/ccs_base/msp430/lib/FR59xx -vmspx --data_model=restricted --use_hw_mpy=F5 --advice:power=all --advice:hw_config=all --define=_MSP430FR6972__--define=_mpu_enable -g --printf_support=minimal --diag_warning=225 --definit_ipt_ipt=-mem_ipt=/ti/ccsv8/ccs_base/msp430/include /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib -mem_display_iph=-cpuature=-cpu_isot_isot-mem_ise-regulsi-f=-rom_ip_ine-regulsi-display_ise-regulsi-f=-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn_cpu.cpu.cpu.cpu.cs=ma-cn_off-cn_infot_infot_infot_infot_infot-content-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn/msp430i_off-cn-cn-/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include

    备注#10371-D:(ULP 1.1)未检测到使用低功耗模式状态更改指令
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 A。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 B。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 C。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 D。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 E。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    完成构建目标:"msp430fr6x7x_MPU_02.c.out"


    ****构建完成****

    在我看来、CCS 安装有问题。 您是如何获得所使用的版本的。 是通过更新以前版本还是全新安装? 请向我们发送有关您所使用系统的更多信息吗?

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

    1)我的 Windows 7 (64)。  

    2) Code Composer Studio 版本:8.1.0.00011  + ALL (!) 更新、在 TI.com 中的"清除安装"之后  

    3) 3)安装详细信息:

    Analysis Suite4.1.0.201805141352com.ti.dvt2.analysis.suite.feature.group德州仪器
    C/C++开发工具9.4.3.201802261533org.eclipse.cdt.feature.group
    
    
    org.eclipse.cdt.launch.remote.feature.group CDT C/C++ GCC 交叉编译器支持9.4.3.201802261533 org.eclipse.cdt.build.crossgcc.feature.group Eclipse CDT C/C++内存视图增强9.4.3.201802261533 org.eclipse.cdt.debug.ui.memory.feature.group Eclipse CDT C/C++远程启动 CCS 9.4.3.201802261533德州
    仪器 com.ti.tools.common.feature.group
    Eclipse CDT 文档9.4.3.20180261531和 Eclipse CD801.288021531 CCS 公共组件 Eclipse CD801.28801.1531 CCS 1.28801.1531 CCS 公共组件com.ti.ccstudio.doc.win32.feature.group德州仪器
    CCS Launcher8.1.0.20180404com.ti.ccstudio.launcher.win32.feature.group德州仪器
    CCS Utilities1.0.20160210com.ti.ccstudio.utils.cli.win32.feature.group德州仪器
    CCStudio P2工具特性7.0.201611291427com.ti.ccstudio.p2tool.feature.group德州仪器
    (TI)铬浏览器特性8.0.201805221500com.ti.chromium.browser.feature.group德州仪器
    (TI) Code Composer Studio 基本组件8.1.0.01300com.ti.ccstudio.base.feature.group德州仪器
    (TI) Code Composer Studio IDE 主要特性8.1.0.201805221500com.ti.ccstudio.idemain.feature.group德州
    仪器德州仪器(TI) Code Composer Studio 基本组件8.1.0.01300 Composer Studio IDE MSP430 Components8.1.0.201805221500com.ti.ccstudio.msp430.feature.group德州仪器
    Code Composer Studio IDE Workflow8.1.0.201805221500com.ti.ccstudio.workflow.feature.group德州仪器
    编译器工具在线文档1.1.5com.ti.cgt.dmed.win32.feature.group德州仪器
    调试服务器8.1.0.1300com.ti.ccstudio.debugserver.win32.feature.group德州仪器
    调试服务器闪存8.1.0.1300com.ti.dsflash.win32.feature.group德州仪器 TI.com.cn DVT
    - EnergyTrace4.1.0.201805141352com.ti.dvt.energytrace.feature.group德州仪器 TI.com.cn DVT
    图形可视化4.1.0.201805141352com.ti.dvt2.graph.visualization.feature.group德州仪器
    DVT - Profiler Analysis Manager4.1.0.201805141352com.ti.dvt2.profileanalysismanager.feature.group德州仪器
    DVT - Resource Explorer4.1.0.201805141352com.ti.dvt2.resource.explorer.feature.group德州仪器
    DVT -系统分析仪4.1.0.201805141352com.ti.dvt2.uia.feature.group德州仪器
    Eclipse Help System2.2.103.v20180301-0715org.eclipse.help.feature.groupEclipse.org
    Eclipse Platform4.7.3.M20180301-0715org.eclipse.platform.ideEclipse.org
    Discovery UI 支持1.1.1.v20170906-1259org.eclipse.equinox.p2.discovery.feature.feature.groupEclipse.org - Equinox
    Equinox P2、IDE 配置。2.3.2.v20171108-1343org.eclipse.equinox.p2.user.ui.feature.groupEclipse.org - Equinox
    GCC MSP430编译器工具7.3.1.24com.ti.gcc.msp430.win32.feature.group德州仪器
    (TI) GCC MSP430工具链8.2.0com.ti.msp430.gcc_support.feature.group德州仪器
    (TI) GEF (MVC)3.11.0.2016061308org.eclipse.gef.feature.groupEclipse GEF
    Git Integration for Eclipse
    
    Composer 4.9.2.2017121509330-r org.eclipse.egit.feature.group Eclipse EGit 图形建模框架(GMF)运行时第三方 GUI 1.6147011.37 Eclipse 模组件 org.eclipse.gmf.runtime.thirdparty.feature.group8.1.0.201805221500com.ti.gc.backplane.feature.group德州仪器
    GUI Composer 程序模型特性8.1.0.201805221500com.ti.gc.pm.feature.group德州仪器
    IDE -调试服务器集成特性8.1.0.201805221500com.ti.debug.server.feature.group德州仪器
    图像分析器4.1.0.201805141352com.ti.dvt2.via.ccs.feature.group德州仪器
    LWInstaller8.1.0.00011com.ti.ccstudio.installer.win32.feature.group德州仪器
    (TI)市场客户端1.6.4.v20180214-1810org.eclipse.epp.mpc.feature.group德州仪器
    (TI)
    MSP430客户机市场1.18.12.255022010.502com.ti.msp430.18.1.help.feature.group MSP430编译器 MSP430客户机帮助德州仪器(TI) MSP430编译器 Tools18.1.3com.ti.cgt.msp430.17.win32.feature.groupTexas Instruments
    Node.js8.11.1com.ti.ccstudio.nodejs.win32.feature.groupTexas Instruments
    p2appf8.1.0.201805221500com.ti.ccstudio.p2appf.feature.groupTexas Instruments
    Pin Mux4.0.1470com.ti.ccstudio.pinmux.win32.feature.groupTexas Instruments
    Remote System Explorer End-User Runtime3.7.3.201704251225org.eclipse.rse.feature.groupEclipse TM Project
    ROV4.1.0.201805141352com.ti.dvt2.rov.feature.groupTexas Instruments
    RTSC/XDCSC
    Client Runtime (IDE Client)德州仪器(德州仪器(TI) RTSC/XDCSC 目标工具支持(org.eclipse.rtsc.xdctools.product.ui.feature.group)3.50.7.20org.eclipse.rtsc.xdctools.product_3.50.7.20.feature.group德州仪器
    (TI) RTSC/XDCtools (目标运行时支持)3.32.2.25org.eclipse.rtsc.xdctools.product_3.32.2.25.feature.group德州仪器
    (TI) RxTx 最终用户运行时2.1.8.0_201606281300gnu.io.rxtx.feature.groupRXTX.org
    系统配置1.0.296com.ti.ccstudio.sysconfig.feature.group德州仪器
    (TI) TargetDB 默认保护程序8.1.0.N201805221500com.ti.ccstudio.targetdb.props.default.win32.feature.group
    
    
    com.ti.targetcontent.feature.group 德州仪器(TI)云代理0.5.1463 com.ti.ccstudio.cloudagent.win32.feature.group 德州仪器 TI MSP430工具链8.2.0 com.ti.msp430.build_debug.feature.group 德州仪器 TI 目标内容1.0.201805221539
    德州仪器 com.ti.tirex.feature.group TI806.247德州仪器 TI.com.cn
    TM 端子4.3.0.201706140544org.eclipse.tm.terminal.feature.feature.groupEclipse.org - Target Management
    TM Terminal Serial Connector Extensions4.3.0.201706140544org.eclipse.tm.terminal.connector.cdtserial.feature.feature.groupEclipse.org - Target Management
    XDCtools Core Update Feature3.32.2.25德州仪器 com.ti.xdctools_3_32.update.feature.group 

    --------
    我的新尝试。

    //---...
    
    
    #include 
    (笑声)
    #pragma SET_CODE_SECTION (".MPU")
    extern void LCD_init (void);
    extern void LCD_print (void);
    extern void LCD_print_init (void);
    extern void LCD_clear (void);
    extern void LCD_gotoxy (char、 char);
    extern int _system_pre_init (void);
    extern int main (void);
    #pragma SET_CODE_SECTION ()
    
    ...
    
    //配置 MPU
    MPUCTL0 = MPUPW; //写入 PWD 以访问 MPU 寄存器
    MPUSEGB1 = 0xA006; // b1 = 0x;b2 = 0x --来自.MPU SET_CODE_SECTION (".MPU")
    MPUSEGB2 = 0xA006+0x474C; //边界被分配给段
    
    //段1 -执行、读取
    //段2 -违反、执行、读取
    //段3 -执行、读取
    MPUSAM = MPUSEG1RE | MPUSEG1XE |
    MPUSEG2VS | MPUSEG2RE | MPUSEG2XE | MPUSEG3XE |
    MPUSEG3RE | MPUSEG3RE
    | MPUSEGIRE| MPUSEGE | MPUSEGIRE| MPUSEGIRE| MPUSEGE
    MPUCTL0 = MPUPW | MPUENA;//启用 MPU 保护
    ...
    //---- 从.map 文件中:
    //.mpu 0 0000a006 0000474c
    // 0000a006 00001d12 main.obj (.mpu:main)
    // 0000bd18 00001bd0 main.obj (.mpu:lcd_print)
    // 0000d8e8 00000996 main.obj (.mpu:lcd_print)//
    00000004b.obj (.epru./0000.e0004e.gobj)/0000.pru.e0004e.ma/0000./0000.pru.eu./0000.e0004e.gobj (./0000.e0004_mcy./0000.pru.e0004e.gobj
    
    
    
    
    

    编译后:

    ***-build of configuration Release for project ZU_v7_FR5972
    
    
    
    
    
    /ti/ccs8/ccsv8/ccs_base/msp430/include diag **"C:\\ti\\ccs8\\ccsv8\\utils\\bin\\gmake"-k -j 8 all -O building file:"../main.c" inverting:MSP430 Compiler "C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 /alex/ti/workspace_v8/ZU_v7_FR5972 /ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include -code_model=cn_cn-simple-cn=cn=cn_cn=-cn_cn=-cn_ovtine-board-cn=-cn_cn=-board-board-cn_cn_cn_cn_cn=-cn/simple-board-cn_cn=-cn_cn_cn=-cn_cn_cn=-cn=-cn-cn-cn-cn-cn_cn/simple-board-ovtore_cn=-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn-cn= diag_wrap=off --display_error_number --ramfunc=off --silicon_errater=cpu21 --silic_errater=cpu22 --silicon_errater=cpu40 --disable_interrupts_around_hw_mpy=off --preproc_with_compile --premain_dependency="main.d_rain="main.d_rain"
    
    ,
    
    这样的主目录:"71:
    "或"proc:#max.c.c 格式失败:"profilter.c:"71:#main.c.rulation.c.rupt_proc:"或 main.c:#max.rupt_proc:"。 声明与"volatile unsigned int MPUCTL0"(在"C:/ti/ccs8/ccsv8/ccs_base/msp430/include/msp430fr5972.h "的第2375行声明)
    "../main.c"、第72行:警告#78-D:此声明没有存储类或类型说明符
    "../main.c"、第72行:错误#148:声明与"volatile unsigned MPUSEGB1"(位于/ti/ccs8/ccsv8/ccs_base/msp430/include/msp430fr5972.h main.c 的第2384
    行)不兼容。 警告#78-D:此声明没有存储类或类型说明符
    "../main.c"、第73行:错误#148:声明与"volatile unsigned int MPUSEGB2"(在"C:/ti/ccs8/ccsv8/ccs_base/msp430/include/msp430fr5972.h "的第2381行声明)不兼容
    "../main.c"、第73行:警告#69-D:整数转换导致更改
    "/main.c"。 此声明没有存储类或类型说明符
    "../main.c"、第78行:错误#148:声明与"volatile unsigned int MPUSAM"(在"C:/ti/ccs8/ccsv8/ccs_base/msp430/include/msp430fr5972.h 的第2387行声明)
    "../main.c"、第82行:警告#78-D:此声明没有存储类或类型说明符
    "./82:main.c:"、main.c: 变量"MPUCTL0"已经被初始化
    "../main.c"、第2802行:警告#112-D:语句无法访问
    在"../main.c"的编译中检测到5个错误。
    gmake:***[main.obj]错误1
    gmake:目标'all'不会由于错误而重做。
    
    ****构建完成****
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    WHOT 是否适用于 MSP430FR5972?
    1)-vmsp --code_model=small --data_model=small

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

     您好、Alexander、

    我对这些不便表示抱歉。

    正确的设置、请在此处查看我的项目的屏幕截图:

    感谢您提供有关系统的信息。 您具有与我相同的 CCS 版本。 Win7也应该可以、虽然我使用的是10、但这一点无关紧要。

    我想知道安装是否出现问题。 您能否从资源管理器导入任何其他代码示例并尝试编译该代码示例、只需检查这些代码是否编译、或者您是否遇到了类似的问题。

    此致

    Peter

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

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

    "./main.c"、第71行:警告#78-D:此声明没有存储类或类型说明符

    我认为它链接到链接器文件和#pragma SET_CODE_SECTION ()用法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    更深入地查看您的 CDT Build Console 打印输出、我发现与我的产品相比存在一些基本差异
    1."c:\\ti\\ccs8\\ccsv8\\utils\\bin\\gmake"-k -j 8在您一侧的所有-O、这意味着对于我来说、您尚未将 CCS 安装到默认目录中。 这有时会产生问题、可能已经是问题的一部分。 请参阅比较我的安装路径"C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 8 all–O
    2.构建文件:"../main.c"
    调用:MSP430编译器
    您一侧的"C:/ti/ccs8/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 -vmsp -code_model=small --data_model=small -O4。
    在我这边
    调用:MSP430编译器
    "c:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 -vmspx --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv8/ccs_base/msp430/include --include_path="C:/Users/a0197246/Daten/CCS8_1/E2E/FR5972/msp430fr6x7x_mpu_02.c --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include --use_path="C:--advice:power=all --advice:hw_config=all --include_erratison="_common_support/capsilitse-support/capsisits=p6x2_datisit_cpu_cpu_support/capsi-from-support/capsilitive-proc -support/capsilit_cpu_cpu_cpu_cpu_support/capsilitive-support/capsisit_probulsi-f_probulsi-support/capsi-f_cpu_probulsi-f_cpu_probulsi-support/capsilit_cpu_cpu_cpu_probulsilit_probulsi-support/

    这与我的情况又有根本的不同。 哪种类型的谜题让我感到困惑、因为从我们导入项目时、不仅是源代码、而且当然还有项目设置应该从我们的原始项目复制、这意味着它们应该是相同的。 您的情况并非如此。 因此、在我看来、导入不起作用、或者项目尚未通过导入创建、而是手动设置、然后只需将源代码复制到手动创建的项目中。 这在许多情况下是不可行的、因为很容易错过一些基本设置。

    因此、我的建议是、请通过将代码示例从 TI Explorer 导入到您的本地工作区来创建项目。 如果这仍然会导致相同的问题、请尝试导入任何其他代码示例、如我之前的帖子中所建议的那样。 如果仍然无法正常运行,则建议删除与当前 CCS 安装相关的所有内容,并在默认目录中重新安装 CCS。

    此致
    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Peter。
    我可能甚至不会说流利的英语、但我可以阅读 TI 的智能书籍和教程
    请阅读:
    MSP430优化 C_C++编译器 v18.1.0.LTS -- slau132r .pdf

    它被写为 MSP430具有16位地址的64 KB 存储器模型、这意味着(因此它被写在书中)必须使用 MSP 而不是 mspx (正如它被写的那样)。 以及数据的小模型代码和小模型。

    从这些不一致之处,我的大脑已经开始沸腾了。
    我为 Atmel 编写并调试了我的程序,我对它进行了三年的许可,现在我已经阅读了这些书籍,并在 MSP430下重新编写了程序。

    我下载程序的第一个已完成的设备-工作正常。
    所有测试均通过、所有硬件均检查10次。 没有错误。

    现在,我焊接了一批器件,其程序与第一个器件完全相同-和......

    奇迹已经开始。
    1) 1)我举了一个包含 JTAG 密码的示例、将其插入到我的程序中、并获得了一个"砖型"、该砖型有效、但不希望接受密码。 我尝试理解这三行代码并不会导致任何结果。 即使是一个从三条线的示例本身也会导致一个“砖头”...

    2) 2)我想保护微芯片不会使代码失真、使用 MPU、我从编译器中获得了一组垫子、即使在手册的10行示例中也是如此。

    3) 3)我从 Windows 中删除有关 compo studio 代码的所有引用、清理注册表、检查、重新启动计算机、再次检查-一切都很干净。
    我把 studio composer 的代码(已经是我第三次这样做了)重新添加了-没有错误。 我举一个示例-编译-然后再次遇到大量错误。 :(

    我不明白发生了什么。

    我在 CVAVR Studio 工作,没有看到这么混乱…
    阅读 TI 大量手册。 我找到并下载了有关 MSP430架构的讲座-但这对我没有帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亚历山大
    如上所述,我对你的所有有效点感到非常抱歉。 但我们仍然必须找到解决这些问题的方法。 我是否正确理解您的第三点、即您尝试了 MPU 以外的其他代码示例、导入和编译、但仍然遇到许多错误?

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

    尊敬的 Alexander:

    您已编写:
    它被写为 MSP430具有16位地址的64 KB 存储器模型、这意味着(因此它被写在书中)必须使用 MSP 而不是 mspx (正如它被写的那样)。 以及数据的小模型代码和小模型。

    您的 MPU 数据表将超过有关此特定器件特性的所有其他文档。
    我已经告诉过您、您的 MCU 具有20位地址架构。

    您的第一个器件工作正常。
    后来发生了一些错误、您无意中做到了这一点。

    我不认为您包括:
    #include
    如果不包含 msp430.h,则不定义体系结构:
    #define __msp430

    请尝试逐步解决所有问题。
    跳过密码、跳过 MPU 保护。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    您是否能够解决编译问题? 您这边的状态是什么? 您是否仍需要有关此方面的帮助?

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

    我发现了一切、问题不在我的计划中。

    第一个"从头开始"安装 CCS 8.1.0会(收集)我的程序、因为它应该起作用。
    我已经有灰色的头发,试图理解为什么在开关中,我工作了3年,没有改变,突然执行了前三个条件,然后没有执行。
    没有"构建干净的项目"不会帮助...
    对于我30年的编程时间,我第一次看到编译器决定更改工作逻辑(!) 我的计划!
    太疯狂了!

    我断开了所有压缩、所有优化、我放置了所有优化、我用手擦除了所有临时文件-它没有帮助。

    我以为在芯片中、我没有在第二次重写时擦除所有存储器和数据-不、没有帮助。

    如果您对 main.c 文件进行了任何修改、我将非常感谢您帮助我解决如何将我的项目编译为"新建的"项目的问题

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

    您好、Alexander、

    我很抱歉您遇到的问题。 我们将尽力帮助您解决问题。 我基本上看到了两种可能性。 项目设置中的某些内容已损坏、并且可能无法手动清除、当然情况不应如此、但我们必须考虑所有潜在问题、否则 CCS 安装会损坏。

    对于第二个、这就是我问您是否能够导入和编译任何其他 FR5972代码示例的原因。 当然、这不是全面测试、但如果您可以编译除 MPU 代码示例之外的其他代码示例、则会证明 CCS 安装的基本功能。 如果其他示例也不起作用、我建议您从所有 CCS IDE 相关文件中清除您的 PC、必要时手动卸载和清理所有目录、然后重新安装最新版本。

    对于第一个项目、可以选择与我私下共享您的项目、我可以尝试在我的一侧编译项目。 要与我私下共享资源、您必须将我添加到您的朋友列表中、然后您可以与我私下共享数据。

    请告诉我、您想走哪条路。

    此致

    Peter

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

    我可以用与 Peter 提供的类似的方式为您提供帮助。
    但是、我不是 TI 员工、您需要决定与我分享什么。
    我也没有 MSP-TS430PM64F 和 MSP430FR5972。
    我有 MSP-EXP430FR6989、因此我的 MCU 可能具有您在项目中使用的所有功能。

    我建议我们启动一个新的工作区、导入适当的项目示例、并逐步向故障点添加功能。

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

    Peter

    1) 1)安装"clear" CCS 8.1.0后、我可以编译示例。
    所有示例。
    并可以更改参数- MPU IPE。
    并可以更改参数-"optimize"

    2) 2) MSP430FR5969 (电路板)与 MSP430FR5972在设置上相同、但端口运行(我有自己的设置、我检查了它们、一切正常)除外。

    问题是、在不更改主文件中的程序代码的情况下、我会对其进行编译、例如、我会得到40933字节的程序长度。
    我加载、所有内容都是第一次工作-正如我所写的(我不编写复杂的结构、我的代码是以简单的"Kernigan 和 Richi"样式阅读和编写的)

    我进行更改、只是添加几行或五行。
    我编译"清理"项目、然后将其写下来-我再次看到该程序的40933字节! 这是疯狂的……
    我知道可能会舍入整个块。
    但是下载后的程序、现在在第二次下载后工作正常、不再像我所写的那样工作。
    无编译器错误。
    无链接器错误。
    我只有两个警告、即148K 字节的文本代码、这是一个有关在8MHz 时检查 FRAM 的警告、但在8MHz 以上时我不工作。

    似乎编译器决定了程序中发生的更改和未发生的更改。
    强制重新读取所有文件并重新创建整个项目的所有尝试均不起作用。
    编译器会显示该工作、甚至会恢复手动删除的目标文件。 似乎有一些缓存、用于存储他已经收集的内容、而不是我的新代码行-他获得了他已经生成的旧代码、并将其插入新项目中。
    没有错误。
    我只有工作所需的程序的 Windows 7、没有游戏、没有多余的、所有安装的程序都已检查、所有不必要的程序都已在注册表中清除。
    我确定。

    "现在我的编译器"标志:
    vmspx --code_model=small --data_model=small -O4 --opt_for_speed=5 --use_hw_hooks=F5 --include_path="C:/ti/ccsv8/ccs_base/msp430/include --include_path="C:/alex/ti/workspace_v8/ZU_v7_FR5972 --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include --advice:hw_config="all_support=subsilot_subsection=union_subsi-display_subsionsi-f_subsisdics_off-code_subsions=us-us_subsi-display_subsionsi-display_off-mag=us-us_subsilot_off-us_subsi-display_subsionsi-display_subsionsi-display_off-mag=-us-us_off-us_subsilot_subsionsi-display_off-us=us-us_subsi-display_off-mag=us_off-us_subsilsi-display_subsi-display_subsi-f_off-codecon_subsionsionsionsionsionsi-

    链接器标志:
    -vmspx --code_model=small --data_model=small -o4 --opt_for_speed=5 --use_hw_heap=F5 --advice:hw_config="all"--define=__MSP430FR5972__--definition=_mem_off-subsils=-code_display_subsection=enchines=-w_up_subsi-f_subsilsi-f_off-wdates=enchines=-w_enchines=-w_enchines=-w_enchines=-w_up_enpage-w_enchines=-w_enpage-w_enchines=-w_enpage-w_up_subsi-f_enchines=-w_up_subsi-f_enchines=-w_up_enpage-w_up_subsi-f_enchines=-w_enpage-w_enchinese-si-f_enpage=/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib /ti/ccsv8/ccs_base/msp430/lib/FR59xx /ti/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx /ti/ccsv8/ccs_base/msp430/include

    ==== "连接时擦除主、信息和 IP 保护区域"

    ==="擦除主、信息和 IP 保护区域"

    如果我更改。 优化设置、堆栈大小、生成的代码大小各不相同、但程序第一次不起作用、不像我写的那样。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    非常感谢您提供的更多信息。
    基于这些评论、您可以在其中查看。
    解决编译器可能不接受所做更改的问题:
    A)当您有新的设置项目并首次更改代码并重新启动调试器时、应该会出现一个窗口、指示源文件的更改、询问: 是否要保存它并包括一个复选框,您可以单击“总是在...之前保存...” 我个人始终启用此功能、因为它可以确保存储更改、因此即使编译器崩溃或发生任何情况、也会存储和应用更改。
    b)在 General 菜单中的相应项目的常规选项中、您可以看到 Configuration。 可以有多种配置、您可以在其中指定使用的源文件、例如、使用的源文件。 例如、可以有一个调试配置(用于更改和调试)和一个版本配置(例如、项目的最终实例)。 如果您刚刚从头开始设置项目、这可能应该是干净的、但为了确保、请检查这个项目。
    C)有时、当您从"Project"下拉菜单中选择"point clear"时、它会有所帮助。 在这种情况下、整个项目应该被清理、这意味着所有编译器、链接器等生成的源应该被刷写和重建。

    若要检查编译器是否正在应用您所做的更改、我将看到以下选项:
    a)执行下载后、在开始代码执行之前、您可以转到下拉菜单"View"并选择"Disassembly"。 这会打开一个新窗口、并联一个窗口、其中仅显示 C 代码、不仅显示 C 代码、还显示代码存储到汇编器和存储器地址的转换。 通过这种方法、您可以检查添加的代码行是否真正放置在 FRAM 中、以及在何处。
    b)类似地、您可以转到"View"和"Memory Browser"、一方面、您可以在此窗口中以十六进制代码检查存储器位置及其实际内容、另一方面、您也可以将存储器内容存储在.txt 文件中。 这样、您就可以存储第一次编译和下载的存储器、并将其与第二次编译和下载进行比较以了解差异。

    请尝试执行此类比较。 提供了免费的比较工具、可帮助您指出两个文件的差异。
    另一件可能发生的事情是、当您使用 MPU 时、首先编译时、您使用一些存储器保护代码对器件进行编程、然后很难擦除受 MPU 保护的特定位置、 这会导致更新后的较大代码出现问题、其中可能有部分被 MPU 阻止。 但上述比较方法应该可以检测到这一点。
    我希望这能帮助您朝着解决问题的方向迈出一步。

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

    亚历山大

    我错过了您已切换到 CCS 8.1.0,我已移至8.0.0。

    但是、我创建了名为 test_5972_v01的空 main.c 项目
    我已经对其进行了编译、没有错误。

    #include 
    
    
    /**
    * main.c
    */
    int main (void)
    {
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时
    
    器返回0;
    }
    

    和控制台输出:

    ***-build of configuration Debug for project test_5972_v01 ****
    
    "C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 2 all -O
    
    building file:"./main.c"
    inverting:MSP430 Compiler
    "C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.2.LTS/bin/cl430 -vmspx -data_model=restricted --use_texample_cn=-cn_cn=v72=cn_hw_support=cn_cn=intrack_cn=v72=-cn_cn_cn_cn=v72=ines=-cn_hw_cn=-cn=v72=intrack_cn_cn_cn=-cn=v72=-cn_hw_cn_cn_cn_cn_cn=v72=ines=-cn_cn_cn_cn=v_hw_support=ines=v72=v_hw_cn=-board-board-cn_event=v72=v=v=v72=v_hw_event=-board-content /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.2.LTS/include /ti/ccsv8/ccs_base/msp430/include display_error_number --silicon_errater=cpu21 --silicon_errater=cpu22 --silicon_errater=cpu40 --preproc_with_compile --preproc_dependence="main.d_rain""./main.c"
    已完成构建
    
    目标:"test_5972_support=small_support=vulinu_exertion-support/capsility=msp430_ex-support/capsilitsi-f=vulation=vulsi-f=vulsilot_off-us_ex-us-mc=us_exc=us_compilit_ex-us-board-support/capsilit_support=msp430_off-support/capsilit_support=mc=vulsilit_support=mc=us-support/capsilit_support=mc=vulsilit_off-support/capsilit_support=mc=us
    
    /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.2.LTS/bin/cl430 silicon_errater=CPU40 -z -m"test_5972_v01.map"--heap_size=160 --stack_size=160 --cinit_hold_wDT=on -i"C:/ti/ccsv8/ccs_base/msp430/include -i"C:/ti/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.2.LTS/include -i"C:/ti/ccsv8/ccs_base/msp430/lib/FR59xx -i"c:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.2.LTS/lib -"cinit_hold_example.a -linkg_linkg-l5972_lib_lib_ram_line_remote_remote_remote_display.pru.pru.pru.pru.pru.pru.pru.pru.pru.pru.pru.ate-lib_lib_libe_display_line_remote_remote_remote_remote_remote_remote_pru.pru.pru.pru.pru.pru.pru.pru.ate-pu -l.com.ate-t.pru.pru.pru.pru.pru.pru.pru.pru.pru.pru.pru.ate-
    
    备注#10371-D:(ULP 1.1)未检测到低功耗模式状态的使用更改指令
    警告#10420-D:对于 FRAM 器件、在启动时、需要禁用 GPIO 上电默认高阻抗模式以激活先前配置的端口设置。 这可以通过清零 PM5CTL0寄存器中的 LOCKLPM5位来完成。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 A。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 B。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 C。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 D。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口 E。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
    完成构建目标:"test_5972_v01.out"
    
    
    ****构建完成****
    

    由于您使用了非标准处理器选项,因此您的编译失败。

    我已经告诉过您、您的 MCU 具有20位架构。
    没有与您的存储器模型兼容的数学库。

    下面的有效设置:

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

    上下滚动此帖子、
    我犯了一个错误。

    我的最后一个答案是对您的原始问题。
    很烦人,很抱歉!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    给 Peter

    问题现在是:

    代码...........

    if (+sw_kn2 >20) sw_kn2=0;
    开关( sw_kn2 ){
    案例0:Zar_regim=20;SW_Regim=2;break;
    案例1:Zar_regim=3;SW_Regim=3;break;
    案例2:Zar_regim=21;SW_Regim=3;break;
    案例3:sw_kn2=6;zar_regim=52;sw_Regim=5;break;
    情况4:if (Pin9bit4=1){Zar_regim=23;SW_Regim=2;}
    情况5:if (Pin9bit4=1){Zar_regim=24;SW_Regim=2;}
    案例6:Zar_regim=4;SW_Regim=4;SW_kn2=11;break;
    案例7:if (Pin9bit4=1){Zar_regim=41;SW_Regim=4;} break;
    案例8:if (Pin9bit4=1){if (z=6 || z=7){Zar_regim=44;SW_Regim=4;}否则{Zar_regim=42;SW_Regim=4;}}中断;
    情况9:if (Pin9bit4=1){if (z=6 || z=7){ Zar_regim=44;SW_Regim=4;}否则{ Zar_regim=42;SW_Regim=4;}}break;
    案例10:if (Pin9bit4=1){Zar_regim=44;SW_Regim=4;} break;
    案例11:if (z=6 || z=7){Zar_regim=54;SW_Regim=5;}否则{Zar_regim=52;SW_Regim=5;}break;
    情况12:if (z=6 || z=7){Zar_regim=54;SW_Regim=5;}否则{Zar_regim=53;SW_Regim=5;}break;
    案例13:Zar_regim=54;SW_Regim=5;break;
    判例14:Zar_regim=20;SW_Regim=2;break;
    案例15:Zar_regim=7;SW_Regim=7;break;
    判例16:Zar_regim=20;SW_Regim=2;break;
    判例17:Zar_regim=20;SW_Regim=2;break;
    判例18:Zar_regim=20;SW_Regim=2;break;
    案例19:Zar_regim=8;SW_Regim=2;break;
    案例20:Zar_regim=9;SW_Regim=2;break;
    默认值:__never_executed();
    } 

    --------

    这是我三年前编写的一段代码,它在 Atmel 上的工作效率与它的工作效率完全相同。
    现在、该代码(片段)在第一次编译时全部起作用、在后续编译时仅起作用、它返回到案例0、然后再次返回1-2-0-1-2。。。

    此段之前的代码有效。
    在这段代码之后立即编写代码-也有效。

    我更改了堆栈的大小-它没有帮助。
    我更改了各种优化方式-它没有帮助。

    Clean Build 写道:

    对于项目 ZU_v7_FR5972
    
    
    
    
    
    /ti/ccsv8/ccs_base/msp430/include、构建配置版本**"C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 8所有 O 构建文件:"./main.c"调用:MSP430编译器"C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 /alex/ti/workspace_v8/ZU_v7_FR5972 /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include -code_model=small-ex-c=cn_code_support=cn-silicon_be-board=-board_codest-cn=-cn=intrabout_cp_-board-board-cn=v-code_display_codest-cn=-board-cn=-cn=ins-board-board-cn_codest-board-cn=-cn=-cn=-cn=-cn_codest-cn=-cn=ins-board-cn_subsi-display_codest-board-cn=-cn=-cn_subsilot-board-cn=-board-board-cn=-cn=-cn=-cn=-cn=-cn_off-board-board-board-board-board-board-board-cn=-cn=-cn=-cn=-cn=ins-board-cn_
    
    
    
    "./main.c"、第2734行:警告#112-D:语句无法访问
    已完成构建:"../main.c"
    
    构建目标:"Zu_v7_FR5972.out"
    调用:MSP430链接
    器"C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 -vmspx -code_model=small -data_model=small -wo_opt_off_subsection-f=-display_f=-f=-f_support=-f=-fun_subs=-code_display_subsection_f=-f=-f=f=-f=-f=-f=-f_us_band_det_subs=-display_off-f=-f=-display_subs=-f=-f=-code_display_b=-f=-f=-f=-f_subs=-f=-f=-f_us_bul_bul_b= silicon_link=CPU21 --silicon_erra=CPU22 --silicon_erra=CPU40 --program_level_compile --call_assumptions=0 --disable_interrupts_around_hw_mpy=on --multithread --remove_hooks_whe_inlining -z -m"zu_v7_frack_exit_examples=-"---/ti/ccsv8/ccs_base/msp430/include /ti/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx ---us_capse_infote_inature_it_capse-inature_it_enit_itive-exit_enit_enit_enit_enit_ex-/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib ------inum_ipt_inum_ines=-intrate-inese-inese-inese-intrab-inate-inese-ov_en_inum_ines=-"---inum_intrab-inat_inate-inate-inese-inese-inate-ine-ine-intrab-inese-ov_inese-inese-ov_/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include /ti/ccsv8/ccs_base/msp430/lib/FR59xx cinit_compression=off --copy_compression=off --rom_model -o "zu_v7_FR5972.out""main.obj "../lnk_msp430fr5972.cmd"-llibmath.a -libpu_init.a -llibc.a
    
    警告#10421-D:对于运行频率高于8MHz 的 FRAM 器件、需要相应地配置 FRAM 等待状态。
    完成构建目标:"zu_v7_FR5972.out"
    
    
    ****构建完成****
    

     ---第2734行:警告#112-D:语句不可达---是" return 0;---

    int main (空)

    while (1){

    (笑声)

    返回0;

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

    Tomasz

    你的建议对我没有帮助。
    我进行了以下设置:
    MSPX

    受限
    全局变量

    所有这些都不能在0-1-2情况下进一步工作(请参阅我之前的消息)

    我将仔细研究这些设置-调试和发布是以不同的方式编译的、
    但结果是一个:情况0-1-2-0-1-2…… :-)

    对于项目 ZU_v7_FR5972
    
    
    
    
    
    /ti/ccsv8/ccs_base/msp430/include、构建配置版本**"C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 8所有 O 构建文件:"./main.c"调用:MSP430编译器"C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 /alex/ti/workspace_v8/ZU_v7_FR5972 /ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include -code_model=large -ji_us_board=-support/capsection=cn_cpuature=cn_board-board-support/capsection-cn=cn=ine-board-codest-cn=v-board-cn_support_subsilit_board-cn=v-board-board-cn=-board-board-cn=intrins-board-cn=v-board-board-board-board-cn=v-cn_support_off-board-cn=-cn=-cn=-cn_support_off-board-board-board-board-display_off-board-cn=-cn=ins-board-board-cn_display_off-board-cn_off-board-board-board-cn=-cn=-cn=-cn=-cn=-cn=-cn=-cn=in
    
    
    
    "./main.c"、第2734行:警告#112-D:语句无法访问
    已完成构建:"../main.c"
    
    构建目标:"Zu_v7_FR5972.out"
    调用:MSP430链接
    器"C:/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/bin/cl430 -vmspx -code_model=large -data_model=restricted -O2 -opt_opt_off_subsection-f=-mspx -vmspx -code_display=f=-f=f_support=-f=-f_us_subs=-f=f=-code_display_subsection_off-f=-f=-f=-f=-f=-us_subs=-f=-f=-code_display_us_band=-f=-f=-display_subs=-f=-f_subsection_off-f=-f=-f=-f=-f_us silicon_link=CPU21 --silicon_erra=CPU22 --silicon_erra=CPU40 --program_level_compile --call_assumptions=0 --disable_interrupts_around_hw_mpy=on --multithread --remove_hooks_whe_inlining -z -m"zu_v7_frack_exit_examples=-"---/ti/ccsv8/ccs_base/msp430/include /ti/ccsv8/ccs_base/msp430/lib/5xx_6xx_FRxx ---us_capse_infote_inature_it_capse-inature_it_enit_itive-exit_enit_enit_enit_enit_ex-/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/lib ------inum_ipt_inum_ines=-intrate-inese-inese-inese-intrab-inate-inese-ov_en_inum_ines=-"---inum_intrab-inat_inate-inate-inese-inese-inate-ine-ine-intrab-inese-ov_inese-inese-ov_/ti/ccsv8/tools/compiler/ti-cgt-msp430_18.1.3.LTS/include /ti/ccsv8/ccs_base/msp430/lib/FR59xx cinit_compression=off --copy_compression=off --rom_model -o "zu_v7_FR5972.out""main.obj "../lnk_msp430fr5972.cmd"-llibmath.a -libpu_init.a -llibc.a
    
    警告#10421-D:对于运行频率高于8MHz 的 FRAM 器件、需要相应地配置 FRAM 等待状态。
    完成构建目标:"zu_v7_FR5972.out"
    
    
    ****构建完成****
    

    我在.map 文件中看到"large + restricted"之后:

    text.2 0 00010000 00004000
    00010000 000016c4 main.obj (.text:main)
    000116c4 00001324 main.obj (.text:lcd_print)
    000129e8 00000868 main.obj (.text:lcd_print_init)
    00013250 000004直流 main.obj (.text:rint_measure)
    0001372c 00000466 rts430x_lc_rd_eabi.lib:frcd.c.obj (.text:_TI_frcdivd)
    00013b92 000003e4. main.obj (.text:_system_pre_init)
    00013f76 00000080 rts430x_lc_rd_eabi.lib:ltoa.c.obj (.text:ltoa)
    00013ff6 0000000a :abs.c.obj (.text:abs)
    
    

    13ff6  =81910!!

    81910大于64000字节的 FRAM im MSP430FR5972!!

    Tomasz -您为什么会给我有害和错误的建议?
    说明清楚地表明模型应该很小!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    非常感谢您提供的附加测试和信息。 我将尝试生成一个小型项目示例、实施您的 IF/case 代码、看看会发生什么情况。 我会尽快回来。

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

    亚历山大

    我已经说过抱歉!
    昨天我意识到我无意中重复了你的最初问题。

    我重复一遍、您使用20位寻址架构!

    13ff6 =81910!!

    上述内容意味着链接器文件或工具链中的某个文件出错。

    你:Tomasz -你为什么给我有害和错误的建议?
    在我的网站上没有什么问题。
    三天前、Peter 为您的 MCU 提供了存储器模型设置:



    您:说明清楚地表明模型应该很小!
    以下哪项说明?

    三天前、我建议您使用 TI v16.9.8.LTS。
    您是否尝试过此编译器版本?
    您知道吗?可能所有 TI-RTOS 示例都不适用于 v18.x.x?

    我相信您的问题与 MPU 的使用相关、也可能与编译器版本有关。
    从一开始就存在一些错误的假设、设置和令人沮丧的错误。

    亚历山大,我正在努力提供帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    简要评论有关内存模型的讨论。 某些 MSP430器件可能不会显示为20位架构、因为没有程序存储器空间、这需要20位地址范围。 然而、在某些情况下、器件仍然具有一个20位寻址总线、这是因为它们源自具有更大内存模型的衍生器件。
    出于这些原因、最好根据 TI Resource Explorer 中的 TI 示例之一启动项目、因为导入功能正确配置了所有相关设置、 而无需通读文档即可识别所有器件特定参数。
    仅供参考、器件的 CPU 类型是 e、g、可在相应器件方框图的器件数据表中看到。 对于 FR5972、方框图显示了包含的 CPUXV2 16个寄存器。 CPUx 表示20位架构。

    现在转至您的 I/案例代码。 为了让我能够在尽可能靠近您的位置生成代码、您是否可以发布此部分的变量定义?
    与该代码部分相关的另一个问题。 在第4种情况下使用的是表达式 Pin9bit4=1。 是 Pin9bit4只是一个变量,还是在某种程度上与 GPIO 寄存器内容的测试有关,就像 P9.4上的输入为高电平,那么...... ? 请详细介绍一下。
    非常感谢。

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

    Tomasz

    在花了一整天的时间进行了"它的工作原理"之后、我可以说、对于 MSP430FR5972、这是唯一可能的
    配置(仅! 正在工作! 配置!) 是:
    vmspx
    --code_model=large
    --data_model=受限
    --near_data=globals

    在这种情况下、链接器会生成两段代码-一段代码会完全阻塞顶部部分(16535?) 代码(100%使用)

    第二部分位于较低的48000KB 存储器中。


    作者:
    "MSP430优化 C_C++编译器 v18.1.0.LTS "(slau132r)
    祝贺您! 文档是凹陷的。 :-)
    我的程序中不使用 TI-RTOS。 任何东西。
    假设= 0。

    所有相同的、不同的编译(及时)会破坏代码并以不可预测的方式工作(我之前引用的一段代码的示例)

    在此代码中,仅0-1-2-0-1-2起作用... 重复时,它将使用所有20个标签。
    我再也不知道该怎么做了...

    我不明白编译器为什么要重写代码的逻辑?
    在程序中、变量 sw_kn2没有其他地方(我已经测试过10次)、除了这个地方(++sw_kn2)没有被修改并且没有变化!

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

    给 Peter

    非常感谢您努力帮助我。

    您可以在下面的代码中找到问题的答案。

    ………….

    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    (笑声)
    //在第1个程序值
    #pragma PERSISTENT (ESW_KN1)之后的初始值 
    volatile unsigned char ESW_KN1=0;

    #pragma PERSISTENT (ESW_kn2)
    volatile unsigned char ESW_kn2=0;
    (笑声) volatile unsigned char sw_kn1=0、sw_kn2=0、z=0;
    volatile unsigned char Pin9bit4=0;

    volatile unsigned char Zar_regim=0;
    volatile unsigned char SW_Regim=2;

    volatile unsigned char Ibuty=0;
    (笑声) if (((P9IN & BIT4)=BIT4){Pin9bit4 = 1;}否则{Pin9bit4 = 0;} ...
    (笑声) sw_kn2=esw_kn2; if (+sw_kn2 >20) sw_kn2=0; switch (__even_in_range (sw_kn2,20)){ 案例0:Zar_regim=20;SW_Regim=2;break; 案例1:Zar_regim=3;SW_Regim=3;break; 案例2:Zar_regim=21;SW_Regim=3;break; 案例3:if (Pin9bit4=1){Zar_regim=22;SW_Regim=2;}否则{ SW_kn2=11;Zar_regim=52;SW_Regim=5;}break; 情况4:if (Pin9bit4=1){Zar_regim=23;sw_Regim=2;} break; 情况5:if (Pin9bit4=1){Zar_regim=24;sw_Regim=2;} break; 情况6:if (Pin9bit4=1){Zar_regim=4;SW_Regim=4;} break; 案例7:if (Pin9bit4=1){Zar_regim=41;SW_Regim=4;} break; 案例8:if (Pin9bit4=1){if (z=6 || z=7){Zar_regim=44;SW_Regim=4;}否则{Zar_regim=42;SW_Regim=4;}}中断; 情况9:if (Pin9bit4=1){if (z=6 || z=7){ Zar_regim=44;SW_Regim=4;}否则{ Zar_regim=42;SW_Regim=4;}}break; 案例10:if (Pin9bit4=1){Zar_regim=44;SW_Regim=4;} break; 案例11:if (z=6 || z=7){Zar_regim=54;SW_Regim=5;}否则{Zar_regim=52;SW_Regim=5;}break; 情况12:if (z=6 || z=7){Zar_regim=54;SW_Regim=5;}否则{Zar_regim=53;SW_Regim=5;}break; 案例13:Zar_regim=54;SW_Regim=5;break; 情况14:if (Pin9bit4=1){Zar_regim=6;SW_Regim=6;}否则{SW_kn2=16;Zar_regim=20;SW_Regim=2;}break; 情况15:if (Pin9bit4=1){Zar_regim=7;sw_Regim=7;}break; 判例16:Zar_regim=20;SW_Regim=2;break; 判例17:Zar_regim=20;SW_Regim=2;break; 判例18:Zar_regim=20;SW_Regim=2;break; 案例19:Zar_regim=8;SW_Regim=2;break; 案例20:Zar_regim=9;SW_Regim=2;break; 默认值:__never_executed(); } esw_kn2=sw_kn2;...

    ………….

    在我的程序中、在这个代码(上面)之前、我使用的是一段代码、100%的工作方式与编写的一样:

    (笑声)
    SW_KN1=ESW_KN1;
    if (+SW_KN1 > 14) sw_KN1 = 0;
    switch (__even_in_range (SW_KN1,14)){
    情况0:Is但是=0;中断;
    情况1:Is但是=1;中断;
    情况2:Is但是=2;中断;
    情况3:Is但是=3;中断;
    情况4:Is但是=4;中断;
    情况5:Is但是=5;中断;
    情况6:Is但是=6;中断;
    情况7:Is但是=7;中断;
    情况8:Is但是=8;中断;
    情况9:Is但是=9;中断;
    情况10:Is但是=10;中断;
    判例11:Is但是=11;中断;
    判例12:Ibus=12;break;
    判例13:Is但是=13;中断;
    情况14:Is但是=14;中断;
    默认值:__never_executed();
    }
    ESW_KN1=SW_KN1;
    ... 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    非常感谢您提供的更多信息。
    代码似乎略有变化。 在前一个案例中、案例4和案例5不包含中断指令。 这可能是您遇到的问题的一部分。
    在任何情况下、我都会在我的一侧运行测试、并尽快返回给您。

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

    Tomasz
    Peter

    我想我开始理解这个问题。

    但我们必须从远处开始。

    没有12、18、20位微处理器架构。
    它只发生:8. 16. 32. 64、128位

    我发现计算机是建筑物地板大小的时间:)
    我为他们编写了程序。 然后我有4KB 的内存...

    在这里,当有只有8位容量的计算机(芯片处理器)时,内存不足:)
    我们发明了一个16位存储器地址寄存器、这样、在程序中就可以使用大小为64、000字节的"单个"存储器进行操作。

    但这还不够...
    30年前(大约)发明了一个出色的解决方案:在64000字节的内存字段内、选择了"窗口"。 此窗口的大小可能为8-16-32 KB。 为了管理"窗口"、出现了一个控制寄存器、该寄存器只需"插入"存储器的"窗口"、即一个额外的存储器。

    因此、8位和16位架构的处理器可以使用128KB 及更多的内存。

    但有一个问题... 一个大问题。

    以前、该计划由了解"如何工作"的人员编写。 现在、程序由编译器编写、编译器机器(正如我们非常希望的那样)应该知道所有这些功能。
    问题在于如何使用(以及用于什么)这些"窗口"。

    编译器机器应了解、您无法访问数据或将控制传输到"当前未显示的窗口"中的程序片段(例如、我们有256 KB 的内存)。
    我在汇编器中为此类配置编写了程序。 这是一项艰巨的任务,需要提供大量的小东西。 该程序很难调试、尤其是在有多个并行进程的情况下。

    也就是说、在您传输"窗口中的某个位置"控件之前、编译器必须首先"在窗口中插入玻璃板(代码)"。 如果不及时发生这种情况、我们将遇到一个大问题、并且微控制器的行为无法预测。

    让我们返回到我的案例。

    我的程序现在获取(优化后) 41535字节的代码。 它非常接近48000字节的"边框到窗口"内存、这是"低"(0 -- 48000)。 MSP430中的第二个"部分"存储器为16、000字节、位于"窗口"中、在新的微控制器模型中、该窗口用作"存储器窗口"。

    我认为我的问题是这个。

    编译器计算机被配置为仅使用以下配置:
    vmspx
    --code_model=large
    --data_model=受限
    --near_data=globals

    配置:
    vmspx
    --code_model=small
    --data_model=small



    vmsp
    --code_model=small
    --data_model=small

    导致错误、因为"库"不支持这些模式。

    很伤心……

    作为证明、我将提供我通过三个内存分配选项获得的全部三种内存配置(图片)。
    我从 MPU 开始的问题(我认为)是直接依赖"窗口(记忆)支持结构"。
    不可能同时"保护"位于"窗口"和"底部代码"中的区域。

    我该怎么办?
    我必须考虑并重写我的程序、以便"windows"不会干扰编译器(和我)构建这样的代码、这些代码不会以不可预测的(仅编译器机器知道)方式放置在不同的内存段中。

    这很伤心。
    我认为我可以更轻松地解决这个问题。

    我为任务选择16位架构时出错了。
    我需要选择32位。

    现在、我想询问有关如何使我的数据保持不变的建议(LSD 的文本消息、无可执行代码!) 在"窗口"(FRAM2)中呈现、这将释放"下部"(FRAM)中可执行代码的空间、并允许我消除此问题。

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

    让我们快速解决它。

    您:没有12、18、20位微处理器架构。
    它只发生:8. 16. 32. 64、128位。

    我完全同意。
    当有人说16位架构意味着 CPU 具有16位长字时。
    然而、在60S/70年代、控制数据公司超级计算机有9位字。
    英特尔4004呢?
    TI 的竞争对手销售了超过15亿个具有12、14、16和24位长字的 MCU。

    IBM 360上的60年代就出现了一种出色的"窗口"解决方案、对于其虚拟内存和更高版本的虚拟机而言、这是其基础。
    是的、在实施时首次实施了虚拟机软件。
    70年代中期、在 Atari、Commodore 和 Apple II 中使用的6502个 CPU 中出现了一种出色的"窗口"解决方案
    它被称为寻呼、在 Microchip PIC MCU 中仍使用此名称。


    在我给你的第一份答复中,我写道:
    5972基于20位总线架构、因此、在大多数情况下、您应该保持 mspx 开启。
    稍后、我在架构之前错过了一个单词"bus"。
    正确的陈述应该是:
    5972基于20位寻址总线架构、因此、在大多数情况下、您应该保持 mspx 开启。

    此外、在我给您的第一次答复中、我建议切换到 TI v16.9.8LTS。
    您为什么不尝试它?

    要安装它、只需转到 Help -> Install Code Generation Compiler Tools... 并选择所需的版本并为其提供帮助、
    然后重新启动 CCS 并在 Project Properties -> CCS General 中切换编译器版本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    新奇迹:)


    在案例11之前工作、则根本不起作用(案例12...20不起作用)
    50%的概率会导致我的器件挂起。

    (笑声) 我可能需要一位精神病医生的帮助... )

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

    永不放弃。

    我希望、今天晚些时候、我将找到时间将您的代码放在我的 LP 上。
    现在、我看到、在 ISR 开始时:
    sw_kn2=esw_kn2;
    在哪里更新了 ESW_kn2?
    ESW_kn2可能永远不会达到< 21值。
    可能是软件问题、而不是工具问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于第一条开关指令:
    如果 SW_kn2 = 20或更大、则执行预递增、
    然后是 IF (... >20)将 SW_kn2设置为0。
    此代码绝不会输入案例1至10。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我只需要一点时间来读取您的 ISR()代码。
    但是、我需要一段时间来读取它。

    如果您改进编码风格/布局以形成以下形式、
    您可能会避免与案例1-10相关的错误、即使很累也是如此。

    sw_kn2=esw_kn2;
    
    if (+SW_kn2 >20)
    sw_kn2=0;
    开关( sw_kn2 ){
    案例0:Zar_regim=20;SW_Regim=2;break;
    案例1:Zar_regim=3;SW_Regim=3;break;
    案例2:Zar_regim=21;SW_Regim=3;break;
    案例3:Zar_regim=22;SW_Regim=2;break;
    案例4:Zar_regim=23;SW_Regim=2;break;
    案例5:Zar_regim=24;SW_Regim=2;break;
    案例6:Zar_regim=4;SW_Regim=4;break;
    案例7:Zar_regim=41;SW_Regim=4;break;
    判例8:Zar_regim=42;SW_Regim=4;break;
    案例9:Zar_regim=43;SW_Regim=4;break;
    案例10:Zar_regim=44;SW_Regim=4;break;
    默认值:__never_executed();
    }
    
    if (sw_kn2 >=11){
    sw_kn3=sw_kn2;
    开关( sw_kn3 ){
    判例11:Zar_regim=52;SW_Regim=5;break;
    判例12:Zar_regim=53;SW_Regim=5;break;
    案例13:Zar_regim=54;SW_Regim=5;break;
    判例14:Zar_regim=6;SW_Regim=6;break;
    案例15:Zar_regim=7;SW_Regim=7;break;
    判例16:Zar_regim=20;SW_Regim=2;break;
    判例17:Zar_regim=20;SW_Regim=2;break;
    判例18:Zar_regim=20;SW_Regim=2;break;
    案例19:Zar_regim=8;SW_Regim=2;break;
    案例20:Zar_regim=9;SW_Regim=2;break;
    默认值:__never_executed();
    }
    }
    

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

    >关于第一条开关指令:
    >如果 SW_kn2 = 20或更大、则执行预递增、
    >然后是 if (... >20)将 SW_kn2设置为0。
    >此代码绝不会输入案例1至10。

    此代码已运行三年:)
    在 Atmel 上。
    在 MSP430上也可以工作、但只有第一个0-1-2
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    给 Alexander 和 Peter、

    您的:)声明此代码已运行三年
    并不意味着此代码一直正常工作。
    Atmel 不存在。
    请不要融化太多。

    Peter、
    您是否同意我的观点、即上述代码不能输入案例1和案例2?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alexander、
    您是否有一个代码部分的流程图、您正在努力解决这个问题、它描述了您打算实现的功能?
    这会有所帮助、因为您的代码已经发生了相当多的更改、因此我不太清楚循环应该执行什么操作。 请给我们一个说明。

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

    Tomasz

    > Peter、
    >您是否同意我的观点、即上述代码无法输入案例1和案例2?

    此代码用于按钮设置(模式)选项的循环(0-1-2 -...-20)枚举。
    是的、它实际上不适用于0和1-2-3。。。- 20。

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

    Peter

    我不绘制图:)
    我在大脑中绘制图表、然后将其转换为代码。

    此代码用于设备中模式选项的循环(0-1-2 -...-20)枚举。
    Timer1 A0内的代码每隔0.5秒调用一次。
    它的任务只是确定写入的内容。 (请参阅上面的代码)
    没有其他东西。

    事实上,事实证明我有一个主循环(main.c, while (1)),在其中处理算法,并且有中断(Timer1...) 它只需修改变量(作为 volatile)。

    基本算法始终会旋转并"查看"变量、并将其用于计算和决策更改模式。 这可以称为并行计算。
    8年来、我一直在使用这种机制来处理按钮。 在我搬到 MSR430之前一切都很好

    在程序中的另一个位置(主主体)、更改是由单击按钮时更改的变量引起的。

    按下按钮时、不会轮询、并且每隔0.5秒 Timer1就会中断一次、它会在微控制器的相应引脚上查找0-1。

    (P7IN & BIT1)!=BIT1 --如果按下按钮(在微控制器输入= 0时)

    (P7IN & BIT1)=BIT1 --如果未按下按钮(在微控制器的输入端= 1),则该引脚由外部电阻上拉至电源的+3.3V。

    在 Timer1代码内、每隔0.5秒检查一次。

    如果未按下按钮、则不会发生任何情况、不会执行此代码。
    程序的其他部分中任何人都不会更改 SW_kn2的值。
    仅在此处读取 Timer1、读出按钮的0-1输出、并决定更改变量的参数(请参阅代码)

    没有堆栈溢出(堆栈大小完全不影响工作)。

    我把这条代码移到了其他地方,但没有任何变化,这个地方似乎是被迷住的:(

    该器件还有两个按钮-在这些按钮上、更改会100%保证、采用相同的机制。

    在其他按钮上、开关中有14个位置和开关中的7个位置-所有操作都与写入的完全相同。

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

    <<<是的,它实际上不适用于0和1-2-3,...-20。
    应该是:是的、它确实可以与0一起工作、而不是与1-20一起工作。

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

    Tomasz

    它确实适用于1-2-3...-20-0-1-2-3-...

    案例 SW_kn2的第一个入口= 1。
    案例 SW_kn2的第二个入口= 2。
    (笑声)
    20 = 20
    第21个= 0

    (笑声)

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

    你是对的。
    回复您时、电话可能太多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我厌倦了所有这些挖掘
    (笑声)
    我结束这个话题、因为我没有找到我的问题的答案。
    我将休息几天、然后开始完全重新编写我负责选择器件工作模式的程序。

    对所有花了时间阅读和帮助我的人-我表示非常感谢!

    我仍然认为 MSP430是我选择的最佳器件(系列)。