gpt4 book ai didi

c - XC8编译器: program returning to beginning of main()

转载 作者:行者123 更新时间:2023-11-30 16:27:27 28 4
gpt4 key购买 nike

我是 PIC 微 Controller 编程新手,在编写一段代码时遇到了一些困难。在 main() 函数中,它设置了一些寄存器,然后进入无限 while 循环。在这个 while 循环中,调用了第二个函数,这会产生延迟(没有调用任何其他函数,包括 main() 然后返回。但是,似乎当第二个函数结束时,程序会转到回到 main() 的顶部,而不是继续在 while 循环中。

编辑1:我做了一些更多的测试,但在没有该功能的情况下我仍然遇到问题,因此几乎可以肯定微 Controller 每秒左右都会重置一次,出于某种未知的原因。应该有一个寄存器可以告诉你重置的原因,所以我会看一下。

编辑 2:这是一个非常基本的代码版本,其中 RC0 LED 每 2 秒短暂闪烁一次(它应该保持关闭状态)。

void main()
{
TRISC = 0x00;
PORTCbits.RC0 = 1;
OSCCON = 0b00000010;
TRISA = 0x00;
PORTA = 0x00;
while(1)
{
PORTCbits.RC0=0;
}
}

编辑 3:事实证明是看门狗定时器导致了重置,现在通过在循环中放置 CLRWDT() 来修复。

最佳答案

可能有很多问题,检查 RCON 或等效寄存器应该有助于辨别原因,并提供部件号和部件电压。一些可能的情况是:- 看门狗定时器跳闸,- 保护跳闸欠压,- 堆栈上溢/下溢,- 你的代码跳入太空(坏指针?),- 您的代码正在执行软件重置,- 你除以 0,- 其他...

关于c - XC8编译器: program returning to beginning of main(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com