原创 8位機如何顯示超過255的16位的數字?

背景 今天寫代碼,需要顯示數據發送次數,次數遞增,最大有可能有幾萬次。但是測試時發現數字到了255之後便從零開始顯示。顯然是數據越界了。 其實這個問題很好解決,主要是數據類型轉換就可以。但是如果遇到一個8位機,而且設備提供的接口

原创 python : list和tuple

list Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。 比如,列出班裏所有同學的名字,就可以用一個list表示: >>> classmates = ['Michael',

原创 嵌入式C小程序合集(持續更新)

嵌入式C語言小程序合集 本人在學習及開發嵌入式相關的過程中,經常會遇到一些程序的小問題,需要一些簡單的小程序實現相應的功能,比如實現數組拷貝、數組交換等等。 下面彙總了一些我經常用到且已得到驗證功能良好的小程序,有需要的同學可按需

原创 數據比較函數(內存比較)

比較兩個數或兩個數組是否一致。 s1 s2 爲數或數組首地址,n爲需要比較的長度 S8 memcmp(U8 *s1, U8 *s2, U8 n) { U8 *src1 = s1; U8 *src2 = s2;

原创 基於ARM Cortex-M0+內核的bootloader程序升級原理及代碼解析

本文主要講述BootLoader程序升級原理及一些代碼的解析,力圖用通俗易懂的語言描述清楚BootLoader升級的主要關鍵點。 BootLoader 升級原理概述 首次接觸這一塊時,有一個概念叫IAP(在應用編程),通俗一點講便

原创 軟鍵盤設計的實現與代碼分享(TP900掌機)

一個項目需要。需要在2天時間裏在振中掌機上添加一個軟鍵盤,用於輸入掌機本身不支持的字符。 接到這個任務後,便開始構思怎麼實現,畢竟軟鍵盤的顯示與切換沒有一個好的算法,用起來會有很多的問題。思來想去,最後確定了方案,開始着手實現。

原创 軟鍵盤輸入設計(C語言)

前言 之前寫過一篇關於軟鍵盤輸入設計的文章點擊這裏查看,用的是掌機自支持的zzdbase語言,文章結尾說了其實最初想用C來實現的,但是中途遇到了困難,便改爲zzdbase語言了。最近項目中想到一個比較好的軟件架構,剛好用來編寫之前

原创 大端小端以及判別方式

大端和小端是指數據在內存中的存儲模式,它由 CPU 決定: 1) 大端模式(Big-endian)是指將數據的低位(比如 1234 中的 34 就是低位)放在內存的高地址上,而數據的高位(比如 1234 中的 12 就是高位)放在

原创 如何做bin文件升級以及數據定位——文件操作函數簇!

寫在前面 之前自己一直在做芯片上應用程序的升級功能,也就是所謂的Bootloader程序,當然,是Secondery Bootloader程序。 在做芯片升級的BootLoader程序時,我的做法計較簡單:一般是接收上位機下發的數

原创 串口數據交換,實現串口合二爲一

背景 在做一個項目的時候,需要用主設備發出數據與從設備進行數據通信。但是存在的問題是,主設備出來的信號是232電平,從設備輸入的信號通過Mbus總線進行通信。手頭剛好也沒有轉換模塊之類的東西。 解決辦法 剛好想到,主設備發出時23

原创 16位幀校驗 (pppfcs)

幀校驗需要一個校驗表,然後傳入參數爲需要校驗的數組的首地址以及長度,返回16位校驗值。 U16 fcstab[256]={ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0

原创 數組與數比較函數(字符串與固定值對比)

將字符串與固定值DATA比較。 U8 memcmpD(U8 *tPtr, U8 DATA, U16 Len) { for (; Len > 0; Len--, tPtr++) {

原创 固定值拷貝

將一個特定的數值拷貝到指定內存中。 如定義數組 > U8 A[3]; 希望A中元素全部爲0x11,則 memset(A,0x11,3); 函數源代碼: void *memset(void *s, U8 c, U16 n) {

原创 [教你警告消除]Warning[Pe1072]: a declaration cannot have a label!

在使用switch時在case 後面申請變量會出現 error: a declaration cannot have a label 的提示 原因:Case statements are only ‘labels’. This m

原创 數組頭尾交換

實現一個數組的逆序交換 e.g. 12 34 56 78 —>>> 78 56 34 12 // 說明: dst--目的地址 src -- 源地址 len -- 數組長度 void HeadToTail(U8 *dst