摘要:【@.1 移植步骤】 网上关于STM32的移植工程很多,不过实际上很多移植工程其中的中断都不能用的,因为没有把STM32中断入口地址与uCOS-II的中断管理机制联系在一起。估计很多移植工程只是简单的写了些跑马灯就好了,没有具体写中断函数测试。这里的移植过程跟我之前做过的LPC2119移植过程类似,也是改文件,改函数名,但是还是那句话,如果你不了解CPU的内核机制,中断机制,以及OS的任务调度原...
阅读全文
摘要:【@.1 移植准备】 目标CPU:LPC2119。ARM7TDMI,最高主频60MHz,Flash128KB,RAM20KB,ARM7系列的中断机制可以参考我的这篇文章<uCOS-II的中断-ARM7实现中断嵌套的方法探究>。 OS:uCOS-II,具体内核版本参考官网。应该已经出到2.90以上了,不过移植时的版本可能没这么高。对于uCOS-II的任务切换机制可以参考我的这篇文章<uCOS-I...
阅读全文
摘要:【@.1 函数周期与死循环】 一般函数的生命周期很简单,从开始调用函数起,直到函数返回,即结束。这样一来就完成了这个函数的使命,它也就不再需要了。对于一般的函数就是这样,但是回过头想想,对于一个系统、OS、或者工业控制中的一个控制器重的系统个,函数返回是很轻易很随便的就能返回吗?返回就意味着函数结束,死亡,若是想系统这样一个很大的函数,它的返回就意味着系统结束。因此,对于系统的函数返...
阅读全文
摘要:【@.1 中断嵌套与CPU支持】 在uCOS-II,或者是任何一个可剥夺型OS系统中,中断嵌套是一个必须要解决的问题。从结论上来说,并不是所有的CPU都支持中断嵌套的,即便是ARM系列内核。对于ARM7系列,例如LPC2xxx系列芯片,硬件上是不支持中断嵌套的,而对于新的CortexM3系列,中断嵌套是可配置的,但是中断嵌套时保存现场的操作并不完整,并没有把R0~R15所有寄存器都保存到堆栈中,...
阅读全文
摘要:【@.1 指针与动态内存管理】 在C语言中的指针若不经过初始化是无法进行操作的,在编译时甚至不会报错,但是一旦运行到这里时就会出现程序错误死机。所以对于指针的操作一定要首先初始化再赋值。考虑如下代码: void foo1(void){ unsigned char * pdata; ... *pdata = 0x0f;}当运行到pdata赋值时由于没有初始化,程序必死。当然这还...
阅读全文