几款代码转流程图软件
今天在写程序时,感到程序中的逻辑判断挺多的,一个函数里的判断太多后自己前后翻来翻去自己搞得都有点晕。所以就想画出流程图来。但是为了这事来画流程图却觉得有点麻烦,这就想到有没有通过通过代码来生成流程图的工具。没想到网上还真有这么些软件。首先搜到的就是CSDN上一位朋友提到的AutoFlowchart。
今天在写程序时,感到程序中的逻辑判断挺多的,一个函数里的判断太多后自己前后翻来翻去自己搞得都有点晕。所以就想画出流程图来。但是为了这事来画流程图却觉得有点麻烦,这就想到有没有通过通过代码来生成流程图的工具。没想到网上还真有这么些软件。首先搜到的就是CSDN上一位朋友提到的AutoFlowchart。
先看一下zlg的喂狗程序 void InitWdt(void) { WDTC = 0x5F0000; // 设置WDTC,喂狗重装值 WDMOD = 0×03; // 设置并启动WDT RstWdt(); // 进行喂狗操作 } void RstWdt(void) { WDFEED = 0xAA; WDFEED = 0×55; } 表面上看来这段程序没有什么问题,如果你不用中断的话,或者是狗的值设置的比较长而中断出现的频率较低时也不容出现什么问题,但是隐患还是依然存在的。 在周立功的<<ARM微控制起基础与实战>>里关于看门狗喂狗寄存器WDFEED有一句话: " 向WDFEED寄存器写入0XAA的下一个操作应当是向WDFEED寄存器写入0X55"。这就说喂狗时向WDFEED写入0xAA和0×55时中间是不能有任何间隔的,也就是在此期间不能被中断。如果我们的程序里用到中断就有可能导致喂狗失败从而导致系统复位。因此为了避免被中断,我们可以在喂狗是关闭中断,在喂狗结束时再开启中断。程序改写如下 void RstWdt(void) { IRQDisable(); WDFEED = 0xAA; WDFEED = 0×55; IRQEnable(); } 这就好比在os中的临界段要关闭中断一样,在不应该被打断的地方先关中断处理完了再开中断。
volatile 的意思是易变的、不稳定的。也许很多人根本没有见过这个关键字,或是不知道它的存在,或许有很多人知道它存在,但是从来没有使用过。其实我在做嵌入式程序以前也是不知道有这个么一个关键字的。
这几天在写个程序需要在arm7做的平台上既显示UNICODE字符也要显示GB2313字符,查阅很多网站都没有找到UNICODE和GB2312的对应关系,唯一的办法就是做成对应的表。经过不懈的查找,终于在CSDN上找到一个源码,里面有个UNICODE和GB2312的对应表,该表囊括了7445个字符,这个对我实在是太有用了。
位域又叫位段(位字段),是一种特殊的结构成员或联合成员(即只能用在结构或联合中),用于指定该成员在内存存储时所占用的位数,从而可以在机内更紧凑地表示数据。
在失业一个月后终于在今天又开始上班了,来到新公司的第一天便分配到一个任务–用富士通单片机做一个仪表控制。说实话不用单片机已经两年多了,很多东西都已经忘掉,以至于在看程序时都不知道位结构是什么东西了,赶紧上网搜索一下,原来是这么回事……