本帖最后由 人人學會單片機 于 2021-2-2 17:55 編輯
STC16F核心板2.jpg (523.18 KB, 下載次數(shù): 112)
下載附件
2021-1-20 12:58 上傳
51hei.png (7.46 KB, 下載次數(shù): 113)
下載附件
2021-1-20 13:53 上傳
下載:
PCB文件 STC8H8K64S4U+STC16F40K128 LQFP48.zip
(13.22 MB, 下載次數(shù): 68)
2021-2-2 17:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
STC16F40K128的數(shù)據(jù)手冊超過20MB,只能放百度盤下載:https://pan.baidu.com/s/1bp4HLl9
一、編譯器相關:
1、必須安裝keil C251編譯器,并且,需要把STC16F的型號添加到軟件安裝目錄,并且需要使用STC16F系列的頭文件
2、項目工程Options for Target 的配置
A、CPU Model 選擇:Source (251 native)
B、Memory Model 選擇:需要根據(jù)程序復雜程度做選擇。一般選擇Small:data vars far const ptr-4
C、Code Rom Size 選擇:Large,64K program。Code Rom Size 模式如果是:Huge,64K functions,16M progr,那么會導致P0口的矩陣鍵盤工作不正常。
3、keil軟件的BUG—0xfD的問題,導致了C251的文件名不能出現(xiàn)以下漢字:
褒餅昌除待諜洱俘庚過糊積箭燼君魁例籠慢謬凝琵訖驅三升數(shù)她聽妄錫淆旋妖引育札正鑄佚冽邶
埤犖蔟摭啐幘獫愷泯潺嫗紈琮槧輦挲臊忑睚銓稞瘕頎螨籪酏觚鳊鼾
二、芯片接口相關:
1、除P30 、P31,其余IO口默認都是高祖模式,需要配置IO口模式才能正常使用。
2、LQFP48的第16腳不同:STC15W是P5.5,STC16F是電壓參考腳ADC_VRef+。
3、和STC8H8K一樣,STC16F LQFP48 也沒有P1.2,用P4.2來控制NRF24L01_CSN
三、C251的語法與STC16F的寄存器:
1、xdata 的變量,必須是寫成 static u8 xdata count; 而不能寫成 static xdata u8 count;
2、C251的函數(shù)中定義的 指向code的指針變量,需要填寫數(shù)據(jù)的存儲位置code。例如:(u8 Reg,u8 code *pBuf,u8 len),表示查找code 數(shù)組。
3、16位全局變量保存到xdata區(qū)間后,如果不能正常讀寫,調整Memory Model選擇:Large,xdata vars far const ptr-4。也有可能選擇Small:data vars far const ptr-4
4、帶參函數(shù)賦值時,不支持+-*/ 符號,例如 OLED_Write_Reg(0xb0+PAGE); 改成OLED_Write_Reg(0xb0|PAGE); 即可。加號改成 按位或
5、STC16F需要在主函數(shù)第一句寫 WTST=0; 讓CPU執(zhí)行單指令,讓CPU速度正常
6、STC16F需要把AUXR的 EXTRAM位寫1,才能讀寫xdata存儲空間。
四、其他
1、WS2812、DS18B20、LCD1602等 需要短暫延遲的代碼 需要增加延遲_nop_();的數(shù)量
2、ADC的寄存器不一樣 需要仔細修改,STC15W是內置參考電壓。STC16F是ADC_VRef+做參考電壓。沒有P1.2,ADC腳是P5.4。如果是實時測量ADC,關閉電源會嚴重影響采集結果。
3、IIC 函數(shù) 每次時鐘上升沿之前 加一句 IIC_Delay();延遲。
4、STC16F單片機的PWM的寄存器,和STC8H8K的PWM寄存器兼容。但是和STC15W的PWM寄存器完全不同。需要全部重新改寫。
|