32G12K128芯片,ESPI会影响EUSB?
初始化spi后USB CDC就不工作了,在spi初始化以后加一句EUSB=1没事了,如果把spi的初始化放在USB初始化之前也没事,想问一句:运行ESPI=1或者IE2 |= 0x02会关闭EUSB吗?事实上是关闭了,奇怪 本帖最后由 zhp 于 2023-5-26 22:25 编辑
内部查过了,您描述的问题确实存在
STC32G12k128系列的EUSB位为只写寄存器,读取恒为0
所以不能使用读-修改-写指令修改IE2的非EUSB位,否则会将EUSB位清0
本帖最后由 晓奇 于 2023-5-26 22:20 编辑
代码在这里:
void SPI_Isr() interrupt 9
{
SPIF = 1; // 清中断标志
Spi_Busy = 0; // 完成标志
}
// 配置使用硬件SPI,没有使用P1.4(MISO),但也不能移作他用,只能空着
void spi_init()
{
P_SW1 &= 0xF3; //SPI-->)P1.3/4/5
SPCTL = 0xdc; //使能SPI主机模式
SPSTAT = 0xc0;
Spi_Busy = 0;
ESPI = 1; //使能SPI中断 IE2 |= 0x02;
}
spi初始化调用放在usb cdc初始化完成以后调用,cdc就不工作了,表现为打不开串口,如果在cdc之前调用spi初始化,就一切正常 晓奇 发表于 2023-5-26 22:04
代码在这里:
void SPI_Isr() interrupt 9
{
您的代码没问题
是我们芯片有上面描述的小遗憾
要么在后面在多设置一次EUSB = 1;
或者使用IE2 = 0xXX;的语句赋值 晓奇兄,不读,只写,先绕过去,后续我们再改
STC8H8K64U无这个问题
STC32G12K128, 先只写,不读,不【读-修改-写】,绕过去
谢谢老师解惑!都不是问题,只是疑惑。如果早看到这注释也就没事了。
有提醒,以后如改版还是要改为能读能写好
页:
[1]