平一帆 发表于 2025-6-30 16:32:58

新手请教大佬AI8G1K08的程序问题

你好大佬,我的单片机是AI8G1K08的51单片机
我想实现的是单片机通过串口接收到一个数据然后将其存储在XRAM中,
接着进入掉电模式(在该模式下,CPU和所有外设均停止运行,但SRAM和XRAM中的数据会保持不变。)
等待一会儿,然后给一个外部中断INT2来唤醒掉电模式,
唤醒后将在掉电模式之前存储的XRAM中的数据通过串口发送出去。
最后附有我的代码附件



主函数配置了GPIO,中断函数,串口


在上图所示代码中配置的掉电模式


其中的RX2_Buffer是这样定义的


这是INT2的中断函数

请大佬帮我看看是不是哪里有问题,不知道为什么实现不了我开始说的功能,期待大佬的回复。
最后是我的代码附件。

神农鼎 发表于 2025-6-30 17:25:14













ercircle 发表于 2025-6-30 17:37:21



不要在中断里搞事情,放在main函数里进行

初始化加上这个
IRCDB=0x10;//省电模式前加上这句
唤醒后
在主循环里等7~9个NOP再发送


省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯技术交流网站 - AI32位8051交流社区


DebugLab 发表于 2025-7-1 00:06:00

中断内不要进行其他操作,要在主程序中if(WakeUpSource==3)

唤醒前后加nop

PCON|=0x02,用|=避免意外修改其他位

SMOD和SMOD0是串口相关的寄存器

还使用了串口,更要注意用|=避免意外修改其他位

初始化正确设置IAP_TPS,时钟频率接近极限频率还需要设置IRCDB=16

注意8G1K08固件版本,
8G1K08无CHIPID,旧版固件(无预置常用频率参数),
只能选择动态调节频率,如是旧版固件的芯片,
选择了使用内部预置频率,可能导致频率错误



页: [1]
查看完整版本: 新手请教大佬AI8G1K08的程序问题