原创 怎樣取整

C語言的浮點數到整數的轉換會去掉小數部分,因此在取整之前加上0.5會時大於等於0.5的小數部分進位。 int ( x <0 ? x-0.5:x+0.5) 注意:因爲取整的默認方式是截斷,因此通常在將浮點數轉換爲整數的時候最好都使用顯式的取

原创 uC/OS-ii在M3中的任務切換與任務堆棧

1 uc/os ii在M3中的堆棧結構 1.1 M3入賬序列 1.2 加上手工入棧序列 2 PendSV在Cortex-M3中的應用 Systick爲嵌入到內核中,優先級比一般中斷優先級高。若在一般中斷的ISR執行過程中,發生了

原创 字符串

1 字符串被放在了哪裏 void main() { const char a[4] = "d"; char b[4] = "ddd"; char c[] = "ddd"; char *d = "ddd"

原创 一個類型轉換的討論

unsigned char port = 0x5a; unsigned char result_8; result_8 = (~port)>>4; 在網上參考的文章,在arm下。(~port)運算時,port會提升爲int型,運算結

原创 臨界區管理

1.臨界區 臨界區是指必須以互斥的方式執行的代碼段,也就是說臨界區範圍內只能由一個活動的線程。例如:修改共享變量的過程中其他的執行線程可能會訪問共享變量,那麼修改共享變量的代碼就被看成是臨界區的一部分。臨界區問題指用安全、公平和對稱的方式

原创 iar通過Terminal I/O調試

有時用戶也許需要對程序中的指令進行調試,以便在沒有硬件支持的情況下使用stdin和stdout。C-SPY通過終端I/O窗口來模擬stdin和stdout。 1、在文件中包含#include < stdio.h > 2、在IAR中設置

原创 ucos在M3中的中斷嵌套機制

M3的中斷控制器特性 可嵌套中斷支持的作用範圍很廣,覆蓋了所有的外部中斷和絕大多數系統異常。外在表現是,這些異常都可以被賦予不同的優先級。當前優先級被存儲在xPSR的專用字段中。當一個異常發生時,硬件會自動比較該異常的優先級是否比當前的異

原创 使用uc/os開發要明確的幾個堆棧

uc/os啓動前的堆棧和uc/os啓動後的堆棧 1、uc/os啓動前所使用的堆棧 該堆棧爲啓動文件第一行指定的堆棧,在IAR中,由人工指定該堆棧的大小,標號爲CSTACK。在keil中只好像沒看到。其位置由編譯器指定,一般是緊跟靜態存儲區