Ai8051U第四集 解答几个小问题。
今天又学习了一集,冲总讲的很细致,话说今天讲了个不停电就可以下载程序到板子,是不是很方便,具体内容我觉得挺好。
那么下面讲一下编写单片机的一些小常识:
1.为什么单片机用while,我们平时在上位机编写程序的时候,尽可能避免while(1) 这样的四循环,而冲总这边为什么都是while死循环呢。
1.答:接着上集接着讲,为什么单片机编写的时候要弄个while呢?因为我们编写单片机实际上已经很底层了,我们平时编写程序实际上都是基于操作系统编写,而嵌入式是基于硬件开发,换句话讲,我们在真真正正的操作一台晶体管样的机器,操作的流程最终就是结束,因此如果我们用C语言的顺序结构,那么程序将会退出单片机,也就是程序运行一次不执行了,因此我们需要用到while(true) 这个死循环来让这个机器一直运作。那有的朋友就问了,这么个死循环不得把cpu干烧啊?其实不然,我们平时编程如果遇到while死循环在会在上位机疯狂运转,那是因为上位机是多进程的,你写个死循环计算机会和其它进程抢占资源,上位机会尽可能的让你的while最快执行,所以特别浪费cpu调度,导致cpu很忙;而这个嵌入式的默认while其实是个总循环,他一直都按顺序执行,只不过不停止罢了,不存在抢占调度的问题,及时有抢占问题,那也有中断器去帮助弄,到时候while(true)也得靠边等着,因此完全不用担心while导致cpu很忙。
2.问题:@STCISP#怎么修改?
2.答这个其实就是个防呆功能,实现很简单,就是你”@STCISP#“,和之前已经下到板子里的程序命令一直就可以,也就是你之前是”@STCISP#“,那么你写的程序的Command也必须是”@STCISP#“。如果你想改,比如STC123,那你改完了之后,先用USB HI*方式先断电重写一遍,此后你再写入的话,你就用自定义命令“STC123”,就可以实现不断电写入程序了(我现在手头没有板子,至少我认为是这样的)。
3.为什么会出现程序写入错误?
3.答:这个冲总已经讲过了,这个实际上是和编译器之间有关系,简单说,我们编程界有个不成文的规定,“就是如果你不用那你就别写,写上属于浪费资源。”,那么冲总在编译的时候,这些代码就会被提醒出来,告诉你“写这么多都不用啊?!”,我们可以回头看下错误信息:
“uncalled function ignored for overlay process” 可以翻译为:“对于覆盖进程,未调用的函数被忽略”。这句话通常出现在编程或软件开发的上下文中,特别是在处理代码覆盖(code coverage)或软件更新/覆盖安装(overlay installation)时。它意味着在特定的覆盖处理过程中,那些没有被调用的函数或代码段被系统或工具忽略了,因为它们对当前的操作或测试没有影响。简而言之,就是那些未使用的代码在当前的覆盖处理中被视为不重要或不需要考虑的部分。但是计算机还是很诚恳的提醒出来,哪些不用的代码,并且你不给他说个所以然来,他是不让编译通过的(及时代码写的没问题,也不行),所以冲总最后用小魔术刷点了以下,告诉电脑可以这么做,才编译通过了。
好了最后 感谢冲总 今天的视频,学到了很多了,希望stcai越做越好!
不错,写的很详细
页:
[1]