STC16F核心板3.jpg (257.87 KB, 下載次數: 107)
下載附件
2021-1-15 17:57 上傳
這就是STC16F40K的核心板。
聲明:以下內容僅供參考,如有錯誤自行糾正。
一、編譯器相關:
1、必須安裝keil C251編譯器,并且,需要把STC16F的型號添加到軟件安裝目錄,并且需要使用STC16F系列的頭文件
2、項目工程Options for Target 的配置
A、CPU Model 選擇:Source (251 native)
B、Memory Model 選擇:需要根據程序復雜程度做選擇。一般選擇Small:data vars far const ptr-4
C、Code Rom Size 選擇:Large,64K program。Code Rom Size 模式如果是:Huge,64K functions,16M progr,那么會導致P0口的矩陣鍵盤工作不正常。
二、芯片接口相關:
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的函數中定義的 指向code的指針變量,需要填寫數據的存儲位置code。例如:(u8 Reg,u8 code *pBuf,u8 len),表示查找code 數組。
3、16位全局變量保存到xdata區間后,如果不能正常讀寫,調整Memory Model選擇:Large,xdata vars far const ptr-4。也有可能選擇Small:data vars far const ptr-4
4、帶參函數賦值時,不支持+-*/ 符號,例如 OLED_Write_Reg(0xb0+PAGE); 改成OLED_Write_Reg(0xb0|PAGE); 即可。加號改成 按位或
5、STC16F需要在主函數第一句寫 WTST=0; 讓CPU執行單指令,讓CPU速度正常
6、STC16F需要把AUXR的 EXTRAM位寫1,才能讀寫xdata存儲空間。
四、WQX開發板課程相關
1、WS2812、DS18B20、LCD1602等 需要短暫延遲的代碼 需要增加延遲_nop_();的數量
2、ADC的寄存器不一樣 需要仔細修改,STC15W是內置參考電壓。STC16F是ADC_VRef+做參考電壓。沒有P1.2,ADC腳是P5.4。如果是實時測量ADC,關閉電源會嚴重影響采集結果。
3、IIC 函數 每次時鐘上升沿之前 加一句 IIC_Delay();延遲。
4、STC16F單片機的PWM的寄存器,和STC8H8K的PWM寄存器兼容。但是和STC15W的PWM寄存器完全不同。需要全部重新改寫。
|