PB23/RST,PB22/BOOT這兩個引腳如果不進行配置默認上電是什么狀態(tài),是RST和BOOT的功能嗎?還是需要對這兩個端口進行上電初始化啟用復用功能才會有這兩個功能?
對于ch57x ch58x 系列,
RST功能,通常是在ISP下載時候選擇開啟或者關閉的,
當RST功能沒有被關閉時候, 其上電后,默認開啟內(nèi)部上拉, 其所在GPIO功能不可用;
當RST功能被關閉時候,其上電的默認狀態(tài)是高阻態(tài), 程序中可按照GPIO方式對其控制.
PB22 作為默認的進入ISP模式的引腳,
其上電后,在ISP狀態(tài),會開啟內(nèi)部上拉,當進入用戶代碼后,將恢復高阻態(tài).
?
其中如果是能了 “串口免按鍵下載” ,這個內(nèi)部上拉時間將會持續(xù)40ms, 否者將只是 數(shù)個us 的時間。
好的,謝謝大神指點,
大神還想問問您,如果UART0和UART1串口中斷功能在串口初始化都打開了,那么在中斷都發(fā)生時是什么情況,例如串口0在中斷里收數(shù),串口1也產(chǎn)生中斷也要收數(shù),這是是中斷嵌套了,要響應串口1的數(shù)據(jù),串口1的數(shù)據(jù)收完了再接收串口0的。還是說串口0發(fā)生中斷后串口1發(fā)生中斷也不響應。還是說有中斷向量表可以對串口優(yōu)先級進行配置。
還有就是下面這個區(qū)域是否能省掉24C02的功能,代替EEPROM的功能,在里面存一些參數(shù),掉電上電可以從里面讀一些參數(shù),如果是可以用能不能提供示例代碼模仿操作下。
串口0和串口1是兩個不同的中斷標志,中斷0的優(yōu)先級高一些,所以處理完一個中斷后,另一個可以執(zhí)行。
替代外部EEPROm可以用這個存儲區(qū)域,具體的例子可以看看evt里面的flash的例子。
好的,謝謝大神
你好,關于CH579M有幾個問題咨詢下:上次說DATAFLASH可以當做EEPROM來使用,就這個問題有以下幾點需要咨詢。
1,程序存儲區(qū)CODEFLASH區(qū)域的數(shù)據(jù)會占用DATAFLASH的區(qū)域嗎?有覆蓋的可能性嗎?
2,運行程序臨時變量和數(shù)組都是存在SRAM里面嗎?會不給覆蓋到DATAFLASH區(qū)域?
3.DATAFLASH區(qū)域只能擦除512個字節(jié)后才能進行寫入嗎?少擦寫點可以嗎?例如128字節(jié)或256字節(jié)。
4.除了上述問題有沒有其它可能存在寫入的DATAFLASH的區(qū)域數(shù)據(jù)丟失。目前是用的2048字節(jié)區(qū)域,但是并沒有用滿,512字節(jié)擦寫一次寫100字節(jié),共擦寫4次寫了400字節(jié)數(shù)據(jù)。
1、程序存儲區(qū)CODEFLASH區(qū)域和DATAFLASH 獨立,互不影響;
2、運行程序臨時變量和數(shù)組都是存在SRAM里面,不會覆蓋到DATAFLASH區(qū)域;
3、擦單位 512,固定的;
4、程序跑飛,指針錯誤,誤操作;flash壽命問題,固定區(qū)域操作超過flash擦寫壽命 這兩種比較常見;
謝謝大師
208W 漢字顯示問題
近日在調(diào)試時,發(fā)現(xiàn)屏幕漢字不能正常不能者正常顯示,百思不得其解,后來找到KEIL的一片文章,后來才頓悟,就是字模生成的字和調(diào)用傳參中漢字字符串的地址不同,導致不一樣取不到數(shù)值。
調(diào)用傳參
? ? ? ? LCD_ShowChinese24x24(0, 0, "中", RED, WHITE, 24, 0);
下面為程序源碼
void LCD_ShowChinese24x24(u16 x,u16 y,u8 *s,u16 fc,u16 bc,u8 sizey,u8 mode)
{
u8 i,j,m=0;
u16 k;
u16 HZnum;//漢字數(shù)目
u16 TypefaceNum;//一個字符所占字節(jié)大小
u16 x0=x;
TypefaceNum=(sizey/8+((sizey%8)?1:0))*sizey;
HZnum=sizeof(tfont24)/sizeof(typFNT_GB24);//統(tǒng)計漢字數(shù)目
for(k=0;k
{
if ((tfont24[k].Index[0]==*(s))&&(tfont24[k].Index[1]==*(s+1)))
{?
LCD_Address_Set(x,y,x+sizey-1,y+sizey-1);
for(i=0;i
{
for(j=0;j<8;j++)
{
if(!mode)//非疊加方式
{
if(tfont24[k].Msk[i]&(0x01<
else LCD_WR_DATA(bc);
m++;
if(m%sizey==0)
{
m=0;
break;
}
}
else//疊加方式
{
if(tfont24[k].Msk[i]&(0x01< LCD_DrawPoint(x,y,fc);//畫一個點
x++;
if((x-x0)==sizey)
{
x=x0;
y++;
break;
}
}
}
}
}??
continue;? //查找到對應點陣字庫立即退出,防止多個漢字重復取模帶來影響
}
}
其中漢字字符串通過指針取地址后長度是兩個字節(jié),在仿真中看到字模庫里的長度為一個字節(jié),所以呢,”if ((tfont24[k].Index[0]==*(s))&&(tfont24[k].Index[1]==*(s+1)))“? ? ,這句就是意思不相等不能從字庫取字符也就不能在屏幕上刷字符,以下是實際仿真實際數(shù)據(jù)查看。
這段代碼是標準代碼在MDK下跑是沒有問題的,在老一點的keil下是有補丁的解決這個問題的。請大神們看看有沒有能夠解決的。
您好,V208的EVT中沒有這個源文件,可能是您移植的代碼本身不支持??梢詫⒋a發(fā)送至zhaiyw@wch.cn,我們幫您看看怎么處理。