| /*------------------------------------------ IAR AVR C++程序运行顺序(以本程序为例)
 1. __low_level_init()
 System.Init()
 2. Timer.Init()
 Led.Init()
 Uart.Init()
 Twi.Init()
 3. main()
 -------------------------------------------*/
 extern "C" __root char __low_level_init (void)
 {
 /*-----------------------------------------------------
 上电或复位后最好再关总中断(防止软件复位)
 ------------------------------------------------------*/
 __disable_interrupt ();//关闭总中断
 /*-----------------------------------------------------
 上电或复位后最好再关看门狗(防止软件复位)
 ------------------------------------------------------*/
 __watchdog_disable ();//关闭内部看门狗
 /*-----------------------------------------------------
 上电或复位后最好把所有IO设置为输入方式
 ------------------------------------------------------*/
 DDRB  = 0x00;
 DDRC  = 0x00;
 DDRD  = 0x00;
 /*-----------------------------------------------------
 上电或复位后最好延时等待系统稳定
 ------------------------------------------------------*/
 __delay_cycles(500000);//等待系统稳定
 /*---------------------------------------------
 郁闷地IAR的看门狗函数竟然只有__watchdog_reset()
 没有__watchdog_enable()还玩什么???
 ----------------------------------------------*/
 //    __watchdog_enable (WDTO_2S);
 /*---------------------------------------------
 郁闷地IAR的休眠函数竟然只有__sleep()
 没有__set_sleep_mode()还玩什么???
 ----------------------------------------------*/
 __set_sleep_mode (SLEEP_MODE_IDLE);
 /*-------------------------------------------------
 由于SystemObj声明了__no_init,故构造函数不能自动执行
 这是IAR和GCC的一个不同之处,且记!!!
 --------------------------------------------------*/
 System.Init ();
 /*-----------------------------------------------------
 __low_level_init()返回0将不初始化所有全局变量即类。
 更可恨地是很多函数将不能正确地执行!!!
 例: void a(const char *str);//或void a(const char str[]);
 若: const str[]="123";
 a(str);//正确
 若: a("123");//不能识别"123"!!!
 所以最好让__low_level_init()返回1,并将原本需要自动执行
 构造函数的类前声明为__no_init,并将其构造函数的实体函数
 Init()移入到__low_level_init()函数体内部显式调用!!!
 ------------------------------------------------------*/
 return 1;//0-不初始化,1-初始化
 }
 
 
 相关链接:http://www.21icbbs.com/club/bbs/showEssence.asp?id=9556&page=3
 |