Thread 中讨论的其他器件:UNIFLASH
工具/软件:
您好、
有人可以指导我如何解决这个问题吗? 在调试模式下编译代码并将其编程到芯片后,它在调试模式下工作,但在释放模式下编译并在芯片上编程代码后,它不起作用。 它似乎停止了。 我无法理解发生了什么。 应该对设置进行一些更改吗? 代码执行的速度是否可能会以这种方式改变?
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.
工具/软件:
您好、
有人可以指导我如何解决这个问题吗? 在调试模式下编译代码并将其编程到芯片后,它在调试模式下工作,但在释放模式下编译并在芯片上编程代码后,它不起作用。 它似乎停止了。 我无法理解发生了什么。 应该对设置进行一些更改吗? 代码执行的速度是否可能会以这种方式改变?
Debug 和 Release 之间最显著的区别可能是优化级别--在 Debug 中通常没有优化 (-O0)、而对于 Release、CCS 从全局优化 (-O2) 开始。
当代码运行速度变慢时、优化器会产生不可见的细微竞态条件。
尝试在 Release Build 中关闭优化(将“Project->Properties"->"CCS Build"->"Compiler"->"Optimization"->"Optimization“ Build"->"Compiler"->"Optimization"->"Optimization Level"“ Level"设置“设置为“为"off"“"off")“)。“。</s>“ “““
这可能是程序性的:您是使用调试器加载代码(在每种情况下)、还是为每个映像执行不同的操作?
若要隔离这一点(如 EASON 所示)、请尝试加载一个非常简单的程序、例如 fet120_1.c、如下所示:
https://dev.ti.com/tirex/explore/node?node=A__AALMRB-xagV6Pr0Cn25PCQ__msp430ware__IOGqZri__LATEST
但遵循相同的步骤。
是的、Bruce。 首先、我在调试模式下编译代码、然后使用 FET_pro430 应用程序将十六进制文件上传到芯片中。 我还在释放模式下执行相同的过程。 关于简单的代码、我编写了该代码、但有趣的是它无法在调试和释放模式下同时工作。 只要我将调试器连接到电路板、然后在调试环境中激励它就可以工作、我可以看到引脚正在切换、但在芯片中上传这个简单的代码后、它根本不工作。 太奇怪了! 我正在使用 CCS12、但它不应该有任何问题、我也会尝试使用 CCS20、然后分享结果
尊敬的 Eason:
当然、我附上了与芯片和 PC 点屏幕截图相关的原理图。 请查找附件。 我还分享了 Bruce 建议的简单测试代码、并做了一些修改。 在原理图中、我 移除了连接到 P1.0 和 P2.4 的电阻器以更准确地测试引脚。
这是代码
#include
内部 main (void)
{
WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器
无符号字符 I;
BCSCTL1 |= XT2OFF;// XT2 = HF XTAL
BCSCTL1 |= XTS | DIVA_3;// DIVA_3 将产生 500kHz 的 ACLK 频率
应该做
{
IFG1 且=~OFIFG;//清除 OSCFault 标志
for (I = 0xFF;I > 0;I--);//设置标志的时间
}
while ((IFG1 和 OFIFG)!= 0);//仍设置 OSCFault 标志?
BCSCTL2 = SELM1 + SELM0 + SSEL;//LFXT1CLK 选择用于 SMCLK 和 MCLK
disable_interrupts();
P1IE 且=~0xFF;
P2IE 且=~0xFF;
P1SEL 且=~0xFF;//设置为 GPIO
P2SEL 且=~0xFF;
P1DIR |= 0x01;
P2DIR |= 0x10;
P1OUT |=0x01;
P2OUT |=0x10;
对于(;;)
{
Volatile unsigned int I;
P2OUT ^= 0x10;//使用异或切换 P1.0
P1OUT ^= 0x01;
I = 65000;//延迟
执行(I-);
while (i!= 0);
}
}
您是说、在自由运行模式下重新连接器件后、它会在 c_int00 停止吗?
但在调试或发布模式下进行编程后、它不起作用。 但我已经提到的主代码在调试模式下工作(在不带调试器的闪存编程之后)、但在释放模式下根本不工作!! 不有趣?!!
您能帮助制作一个表格来展示测试条件和结果吗? 我在调试或释放模式下完成的工程中有点迷路、并且器件处于调试模式或自由运行/释放模式。 我也被“在不使用调试器的情况下编程闪存之后“所混淆。 如何进行编程?
老实说、我们以前在 MSP430 上没有遇到这个问题。 您是否可以帮助使用示波器捕获引脚信号和 Vcc 信号、以查看是否存在任何超出规格的情况。
我会订购一些 F1232 样本来检查我。 发货需要大约 1 周时间。
您的意思是、在自由运行模式下重新连接器件后、它会在 c_int00 停止吗?
不、我认为它 在 c_int00 停止。 我刚刚展示了调试环境的屏幕截图、说它在那里正确地完成了工作、但在闪存编程后它无法正常工作!
[引述 userid=“372580" url="“ url="~“~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1520335/msp430f1232-problems-in-release-mode/5848595 #5848595“]我也被“在没有调试器的情况下进行程序闪存之后“所混淆。 您如何编程?我的意思是、将编译的代码(在调试模式或释放模式下)发送到芯片、然后重新启动电路板。 此代码不起作用。 请看一下这两张图片。
如果您选择加载程序、它将对器件进行编程。
我的主要关注点就在这里。 如果我选择加载程序、它会在调试模式或释放模式下对芯片进行编程? 我想知道的是、 当我们在其中一种模式下编译代码、然后对芯片进行编程时、芯片操作是否有任何区别?
关于加载芯片,我发现,在按下自动底部的软件 ( FET_PRO430) 它正在做这个过程,并向我显示编程是成功的,但在现实中它没有 做的工作!! 这就是为什么在使用此软件进行更改和加载代码后,代码没有完成工作的原因。
您的意思是问题在于 FET-PRO430 不将代码编程到 MSP430 中? 如果是、您可以尝试改用 Uniflash。
好的酒店 感谢您的指导。 是的,我安装了 UniFlash ,它不能找到目标在所有一次它可以编程芯片. 我想在属于 MSPFlasher.exe 或我的计算机的 DLL 文件中有一些问题。 总而言之、解决此问题后、我将再次测试代码、以查看两种模式下的代码性能是否相同。 感谢您的支持
另一种可能性是 FET-PRO430 不受 TI 污染。 FET-PRO430 可能来自第三方。
我建议您订购像这一个 (MSP-EXP430G2ET) 这样的 MSP430 LaunchPad、以使用板载调试器。