OpenEdv-开源电子网
标题:
如果mian函数里面调的函数里面有return 0,会不会引起单片机复位
[打印本页]
作者:
ddfha1
时间:
2024-7-3 11:29
标题:
如果mian函数里面调的函数里面有return 0,会不会引起单片机复位
如果mian函数里面调的函数里面有return 0,会不会引起单片机复位
如:
int main(void)
{
uint8_t t;
uint8_t len;
uint16_t times = 0;
sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */
delay_init(168); /* 延时初始化 */
led_init(); /* 初始化LED */
btim_timx_int_init(10 - 1, 8400 - 1); /* 84 000 000 / 84 00 = 10 000 10Khz的计数频率,计数5K次为500ms */
while (1)
{
delay_ms(1);
t++;
if(t==200)
{
LED1=!LED1;
t=0;
led2flag=1;
return 0;
}
if(led2flag)
{
t2++;
if(t2==200)
{
LED2=!LED2;
t1=0;
led2flag=0;
return 0;
}
}
}
这里执行到LED1翻转的时候就复位了,LED2永远也不会翻转
为什么会复位
作者:
姚先起
时间:
2024-7-3 11:29
主函数return并不会导致单片机复位,但是main函数会再次被执行。
/* Call the clock system intitialization function.*/
bl SystemInit
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr
上面这段是从STM32启动文件的第93行开始,启动文件调用main函数,如果main函数退出就会运行bx lr。这时PC指针又会回到main函数入口再次执行。
作者:
三叶草
时间:
2024-7-3 12:52
没有看门狗不会
作者:
ddfha1
时间:
2024-7-6 08:47
我程序加了看门狗,加看门狗会导致复位重启?
作者:
ddfha1
时间:
2024-7-6 08:58
程序里面有看门狗程序
欢迎光临 OpenEdv-开源电子网 (https://www.openedv.com/)
Powered by Discuz! X3.4