標(biāo)題: STC16F40K128單片機(jī)LQFP48核心板PCB文件 使用keil C251的注意事項(xiàng)總結(jié) [打印本頁(yè)]

作者: 人人學(xué)會(huì)單片機(jī)    時(shí)間: 2021-1-20 12:59
標(biāo)題: STC16F40K128單片機(jī)LQFP48核心板PCB文件 使用keil C251的注意事項(xiàng)總結(jié)
本帖最后由 人人學(xué)會(huì)單片機(jī) 于 2021-2-2 17:55 編輯




下載:
PCB文件 STC8H8K64S4U+STC16F40K128 LQFP48.zip (13.22 MB, 下載次數(shù): 68)
STC16F40K128的數(shù)據(jù)手冊(cè)超過(guò)20MB,只能放百度盤(pán)下載:https://pan.baidu.com/s/1bp4HLl9
一、編譯器相關(guān):
        1、必須安裝keil C251編譯器,并且,需要把STC16F的型號(hào)添加到軟件安裝目錄,并且需要使用STC16F系列的頭文件

        2、項(xiàng)目工程O(píng)ptions for Target 的配置
                A、CPU Model 選擇:Source (251 native)
                B、Memory Model 選擇:需要根據(jù)程序復(fù)雜程度做選擇。一般選擇Small:data vars far const ptr-4
                C、Code Rom Size 選擇:Large,64K program。Code Rom Size 模式如果是:Huge,64K functions,16M progr,那么會(huì)導(dǎo)致P0口的矩陣鍵盤(pán)工作不正常。
        
        3、keil軟件的BUG—0xfD的問(wèn)題,導(dǎo)致了C251的文件名不能出現(xiàn)以下漢字:
        褒餅昌除待諜洱俘庚過(guò)糊積箭燼君魁例籠慢謬凝琵訖驅(qū)三升數(shù)她聽(tīng)妄錫淆旋妖引育札正鑄佚冽邶
        埤犖蔟摭啐幘獫愷泯潺嫗紈琮槧輦挲臊忑睚銓稞瘕頎螨籪酏觚鳊鼾        

二、芯片接口相關(guān):
        1、除P30 、P31,其余IO口默認(rèn)都是高祖模式,需要配置IO口模式才能正常使用。

        2、LQFP48的第16腳不同:STC15W是P5.5,STC16F是電壓參考腳ADC_VRef+。

        3、和STC8H8K一樣,STC16F LQFP48 也沒(méi)有P1.2,用P4.2來(lái)控制NRF24L01_CSN


三、C251的語(yǔ)法與STC16F的寄存器:
        1、xdata 的變量,必須是寫(xiě)成 static u8 xdata count;  而不能寫(xiě)成 static xdata u8 count;

        2、C251的函數(shù)中定義的 指向code的指針變量,需要填寫(xiě)數(shù)據(jù)的存儲(chǔ)位置code。例如:(u8 Reg,u8 code *pBuf,u8 len),表示查找code 數(shù)組。

        3、16位全局變量保存到xdata區(qū)間后,如果不能正常讀寫(xiě),調(diào)整Memory Model選擇:Large,xdata vars far const ptr-4。也有可能選擇Small:data vars far const ptr-4

        4、帶參函數(shù)賦值時(shí),不支持+-*/ 符號(hào),例如 OLED_Write_Reg(0xb0+PAGE);   改成OLED_Write_Reg(0xb0|PAGE); 即可。加號(hào)改成 按位或

        5、STC16F需要在主函數(shù)第一句寫(xiě)  WTST=0;  讓CPU執(zhí)行單指令,讓CPU速度正常

        6、STC16F需要把AUXR的 EXTRAM位寫(xiě)1,才能讀寫(xiě)xdata存儲(chǔ)空間。


四、其他
        1、WS2812、DS18B20、LCD1602等 需要短暫延遲的代碼 需要增加延遲_nop_();的數(shù)量

        2、ADC的寄存器不一樣 需要仔細(xì)修改,STC15W是內(nèi)置參考電壓。STC16F是ADC_VRef+做參考電壓。沒(méi)有P1.2,ADC腳是P5.4。如果是實(shí)時(shí)測(cè)量ADC,關(guān)閉電源會(huì)嚴(yán)重影響采集結(jié)果。

        3、IIC 函數(shù)  每次時(shí)鐘上升沿之前 加一句 IIC_Delay();延遲。

        4、STC16F單片機(jī)的PWM的寄存器,和STC8H8K的PWM寄存器兼容。但是和STC15W的PWM寄存器完全不同。需要全部重新改寫(xiě)。



作者: hu_jia168    時(shí)間: 2022-5-16 23:38
編譯器都不一樣了
作者: 田賀    時(shí)間: 2022-5-18 20:18
感謝分享!這下可以少走很多彎路了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1