当前位置: 首页 > news >正文

连云港网站建设公司商丘seo推广

连云港网站建设公司,商丘seo推广,html免费代码网站,wordpress弹窗通知Keil的两个符号$Sub$ $与 $Super$ $是其做的打“补丁”功能 具体调用方法就是程序中包含有main函数,和 $Sub$ $main 、 $Super$ $main 两个符号 源码先放出来 /* re-define main function */ int $Sub$$main(void) {rtthread_startup();return 0; }/*** brief Thi…

Keil的两个符号$Sub$ $与 $Super$ $是其做的打“补丁”功能
具体调用方法就是程序中包含有main函数,和 $Sub$ $main 、 $Super$ $main 两个符号
源码先放出来

/* re-define main function */
int $Sub$$main(void)
{rtthread_startup();return 0;
}
/*** @brief  This function will create and start the main thread, but this thread*         will not run until the scheduler starts.*/
void rt_application_init(void)
{rt_thread_t tid;#ifdef RT_USING_HEAPtid = rt_thread_create("main", main_thread_entry, RT_NULL,RT_MAIN_THREAD_STACK_SIZE, RT_MAIN_THREAD_PRIORITY, 20);RT_ASSERT(tid != RT_NULL);
#elsert_err_t result;tid = &main_thread;result = rt_thread_init(tid, "main", main_thread_entry, RT_NULL,main_thread_stack, sizeof(main_thread_stack), RT_MAIN_THREAD_PRIORITY, 20);RT_ASSERT(result == RT_EOK);/* if not define RT_USING_HEAP, using to eliminate the warning */(void)result;
#endif /* RT_USING_HEAP */rt_thread_startup(tid);
}
/*** @brief  This function will call all levels of initialization functions to complete*         the initialization of the system, and finally start the scheduler.** @return Normally never returns. If 0 is returned, the scheduler failed.*/
int rtthread_startup(void)
{rt_hw_interrupt_disable();/* board level initialization* NOTE: please initialize heap inside board initialization.*/rt_hw_board_init();/* show RT-Thread version */rt_show_version();/* timer system initialization */rt_system_timer_init();/* scheduler system initialization */rt_system_scheduler_init();#ifdef RT_USING_SIGNALS/* signal system initialization */rt_system_signal_init();
#endif /* RT_USING_SIGNALS *//* create init_thread */rt_application_init();/* timer thread initialization */rt_system_timer_thread_init();/* idle thread initialization */rt_thread_idle_init();#ifdef RT_USING_SMPrt_hw_spin_lock(&_cpus_lock);
#endif /* RT_USING_SMP *//* start scheduler */rt_system_scheduler_start();/* never reach here */return 0;
}
#endif /* RT_USING_USER_MAIN */
void main_thread_entry(void *parameter)
{extern int main(void);*/
#ifdef __ARMCC_VERSION{extern int $Super$$main(void);$Super$$main(); /* for ARMCC. */}
#elif defined(__ICCARM__) || defined(__GNUC__) || defined(__TASKING__) || defined(__TI_COMPILER_VERSION__)main();
#endif
}

理下顺序
我们驱动文件在跳转main函数时由于定义有int $Sub$\$main(void) 所以先执行这个函数,在这个函数中主要是进行系统、板级初始化,在这里面穿件了一个主线程main_thread_entry,而主线程里面调用了 $Super$\$main()就回到main函数执行;所以我们就把main放在一个线程里面,而其他RTOS是在执行main后才进行相关的RTOS初始化,板级初始化等。
可能会引起迷惑的地方
1.为什么要调用 $Super$\$main()而不调用main我觉得按照上面描述的逻辑如果调用main就会又去跳转到int $Sub$\$main(void) 这里无限循环调用下去,所以不会说在这里要调用main进行跳转;
2.为什么还要调用 $Super$\$main()而不是结束了int $Sub$\$main(void)直接返回main去执行,这个我觉得主要是让人们知道最终main的去向,在BX __main 之后都不知道main去哪了,具体细节可以在Keil手册查看相关细节。

http://www.jinmujx.cn/news/80079.html

相关文章:

  • 商城网站策划方案做直销去哪里找客户
  • 网站商城维护怎么做谷歌广告投放教程
  • 江西seo百度如何优化排名靠前
  • wordpress移动端导航菜单企业关键词优化专业公司
  • 免费建设网站微信推广怎么做
  • ibm用来做测试的网站一份完整的电商运营方案
  • 唐山工程建设信息网站seo网站推广助理
  • 国外免费b2bseo培训学校
  • 域名跟网站的区别吗seo关键词搜索优化
  • asp电影网站源码营销自动化
  • 襄阳网站建设找下拉哥科技东莞搜索优化十年乐云seo
  • 网站建设 业务关键词挖掘ppt
  • 日本做h动漫电影网站百度推广平台
  • 濮阳做网站公司广安百度推广代理商
  • 淮北网站建设公司网站seo什么意思
  • 公众号怎么制作小程序武汉网站建设方案优化
  • j2ee网站开发免费教程赣州seo外包怎么收费
  • 电商运营是做什么厦门关键词优化网站
  • 网站展示模板psd下载上海网络推广渠道
  • 莱芜在线论坛莱芜话题凤城高中seo建站
  • 做交易网站需要用到的软件有哪些文娱热搜榜
  • 学校网站开发与设计企业查询系统
  • 集团网站群建设方案大数据营销的概念
  • 少儿编程官网seo智能优化
  • 白山北京网站建设网络营销策划步骤
  • 湛江制作网站企业百度投诉平台在哪里投诉
  • 国内域名和国外域名区别宁波seo外包优化
  • 专业电商网站建设多少钱nba最新消息新闻报道
  • 有每天做任务赚钱的网站吗考试培训
  • 乡镇网站建设百度竞价排名算法