CH582M

PB23/RST,PB22/BOOT这两个引脚如果不进行配置默认上电是什么状态,是RST和BOOT的功能吗?还是需要对这两个端口进行上电初始化启用复用功能才会有这两个功能?





对于ch57x ch58x 系列,

RST功能,通常是在ISP下载时候选择开启或者关闭的,

当RST功能没有被关闭时候, 其上电后,默认开启内部上拉, 其所在GPIO功能不可用;

当RST功能被关闭时候,其上电的默认状态是高阻态, 程序中可按照GPIO方式对其控制.


PB22 作为默认的进入ISP模式的引脚,

其上电后,在ISP状态,会开启内部上拉,当进入用户代码后,将恢复高阻态.

 

其中如果是能了 “串口免按键下载” ,这个内部上拉时间将会持续40ms, 否者将只是 数个us 的时间。


好的,谢谢大神指点,


大神还想问问您,如果UART0和UART1串口中断功能在串口初始化都打开了,那么在中断都发生时是什么情况,例如串口0在中断里收数,串口1也产生中断也要收数,这是是中断嵌套了,要响应串口1的数据,串口1的数据收完了再接收串口0的。还是说串口0发生中断后串口1发生中断也不响应。还是说有中断向量表可以对串口优先级进行配置。


还有就是下面这个区域是否能省掉24C02的功能,代替EEPROM的功能,在里面存一些参数,掉电上电可以从里面读一些参数,如果是可以用能不能提供示例代码模仿操作下。image.png


image.png

串口0和串口1是两个不同的中断标志,中断0的优先级高一些,所以处理完一个中断后,另一个可以执行。


image.png

替代外部EEPROm可以用这个存储区域,具体的例子可以看看evt里面的flash的例子。


好的,谢谢大神j_0002.gif


你好,关于CH579M有几个问题咨询下:上次说DATAFLASH可以当做EEPROM来使用,就这个问题有以下几点需要咨询。

1,程序存储区CODEFLASH区域的数据会占用DATAFLASH的区域吗?有覆盖的可能性吗?

2,运行程序临时变量和数组都是存在SRAM里面吗?会不给覆盖到DATAFLASH区域?

3.DATAFLASH区域只能擦除512个字节后才能进行写入吗?少擦写点可以吗?例如128字节或256字节。

4.除了上述问题有没有其它可能存在写入的DATAFLASH的区域数据丢失。目前是用的2048字节区域,但是并没有用满,512字节擦写一次写100字节,共擦写4次写了400字节数据。


1、程序存储区CODEFLASH区域和DATAFLASH 独立,互不影响;

2、运行程序临时变量和数组都是存在SRAM里面,不会覆盖到DATAFLASH区域;

3、擦单位 512,固定的;

4、程序跑飞,指针错误,误操作;flash寿命问题,固定区域操作超过flash擦写寿命 这两种比较常见;


谢谢大师


208W 汉字显示问题



近日在调试时,发现屏幕汉字不能正常不能者正常显示,百思不得其解,后来找到KEIL的一片文章,后来才顿悟,就是字模生成的字和调用传参中汉字字符串的地址不同,导致不一样取不到数值。

调用传参

        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;//汉字数目

u16 TypefaceNum;//一个字符所占字节大小

u16 x0=x;

TypefaceNum=(sizey/8+((sizey%8)?1:0))*sizey;

HZnum=sizeof(tfont24)/sizeof(typFNT_GB24);//统计汉字数目

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;  //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响

}

}

其中汉字字符串通过指针取地址后长度是两个字节,在仿真中看到字模库里的长度为一个字节,所以呢,”if ((tfont24[k].Index[0]==*(s))&&(tfont24[k].Index[1]==*(s+1)))“    ,这句就是意思不相等不能从字库取字符也就不能在屏幕上刷字符,以下是实际仿真实际数据查看。

1693152217897.png

这段代码是标准代码在MDK下跑是没有问题的,在老一点的keil下是有补丁的解决这个问题的。请大神们看看有没有能够解决的。



您好,V208的EVT中没有这个源文件,可能是您移植的代码本身不支持。可以将代码发送至zhaiyw@wch.cn,我们帮您看看怎么处理。


只有登录才能回复,可以选择微信账号登录