芯远航 发表于 2026-6-30 17:11:29

问www.STCAIMCU.com【AI助手】:

开启ADC-DMA后,修改ADC采样分频寄存器,是否需要同步调整DMA_ADC配置?





C_wolf 发表于 2026-6-30 21:10:31

让AI写一个应用掉电定时唤醒功能,给出的程序有问题,是不是没有参考例程,他就胡写啊?

AI回答内容如下:
关于您提出的问题,我来详细分析一下这段代码及掉电唤醒定时器(WKT)的时间计算。

---

## 一、您代码的实际唤醒时间

```c
WKTCL = 0xcd;               // 低8位
WKTCH = 0x82;               // bit7=1使能,bit6-0 = 0x02
```

WKTCH 的 bit7 是使能位(**ENWKT**),不计入计数值。
因此 **16位计数值** = `(WKTCH << 8) | WKTCL` = `(0x02 << 8) | 0xCD` = **0x02CD = 717**

STC8系列掉电唤醒定时器的时钟源是**内部32kHz低速振荡器**(典型值约32.768kHz,实际随温漂变化)。
唤醒时间计算公式为:

> **唤醒时间 = 计数值 ÷ 时钟频率**

以典型32.768kHz计算:
**717 ÷ 32768 ≈ 21.9 ms**

也就是说,您代码实际产生的唤醒间隔**约为22ms,而不是您期望的50ms**。

---

## 二、您猜测的0x999和0x99对不对?

- **0x999**(十进制2457):2457÷32768 ≈ **75ms** ❌ 不是50ms
- **0x99**(十进制153):153÷32768 ≈ **4.7ms** ❌ 也不是50ms

两个猜测都不对。

---

## 三、正确设置50ms的方法

50ms ÷ (1/32768) = **1638.4 ≈ 1638**(十六进制 **0x0666**)

正确代码应为:

```c
WKTCL = 0x66;               // 低8位
WKTCH = 0x86;               // 高7位=0x06,bit7=1使能
```

即:
- 计数值 = 0x0666 = 1638
- 理论唤醒时间 = 1638 ÷ 32768 ≈ **50.0 ms**

> ⚠️ **注意**:内部低速振荡器频率不是绝对精确的32.768kHz,实际值可能在20kHz~40kHz范围变化。如果您需要精确的50ms,建议:
> 1. 改用**外部32.768kHz晶振**(精度更高)
> 2. 或通过实验微调计数值,实测校准

---

## 四、其他需要留意的重要事项(基于论坛经验)

从论坛已知的掉电唤醒定时器使用反馈中,有几个关键点提醒您:

1. **WKTCH/WKTCL是只写寄存器**,不能使用`ORL`、`ANL`、`XRL`等读-修改-写指令,必须一次性写入完整的16位值。
   (例如在C语言中直接赋值即可,不要用 `|=` 操作)

2. **掉电唤醒定时器仅在掉电模式(PCON=0x02)下生效**,不能唤醒空闲模式(PCON=0x01)。

3. 写入后建议加几个 `_nop_()` 延时,确保寄存器写入稳定后再进入掉电模式。

4. 唤醒后无需重新配置WKT寄存器(除非需要修改唤醒周期)。

---

## 五、总结

| 项目 | 您原来的值 | 50ms需要的值 |
|------|-----------|-------------|
| WKTCL | 0xCD | 0x66 |
| WKTCH | 0x82 | 0x86 |
| 计数值 | 717 (0x02CD) | 1638 (0x0666) |
| 实际唤醒时间 | ≈22ms | ≈50ms |

您代码实际给出的是约22ms唤醒,不是50ms;您猜测的0x999(≈75ms)和0x99(≈4.7ms)也都不对。按上述 `WKTCL=0x66, WKTCH=0x86` 即可得到接近50ms的唤醒间隔。

(以上计算基于STC内部32kHz低速振荡器典型值,如需更高精度请外部接32768晶振)

---

[🔍 搜索 "/* 掉电唤醒定时器初始化 (约50ms唤醒一次) */void wakeup_timer_init(void){    WKTCL = 0xcd;               // 设置唤醒时间    WKTCH = 0x82;               // 高字节 + 使能位 (bit7=1)}50ms的计时不应该是99么"]

王昱顺 发表于 2026-6-30 23:36:58

C_wolf 发表于 2026-6-30 21:10
让AI写一个应用掉电定时唤醒功能,给出的程序有问题,是不是没有参考例程,他就胡写啊?

AI回答内容如下: ...


我看了一下,是因为公式没有被正常转为md,所以ai没看到公式,按照常规推理方式给出的计算结果
我用内部正在内测的版本试了一下,是可以正常给出结果的

所以这个问题等后面更新新的格式md文件和新的架构就可以解决掉了

浅夏星空 发表于 2026-7-1 10:19:31

AI8051U的8位模式调通了,直接改成32位模式能行不?需要做那些改动?








芯风起 发表于 2026-7-1 10:21:39

问www.STCAIMCU.com【AI助手】:

STC8H1K16 如何正确使能 P1.1 的 ADC 模拟功能?





32G12K128 发表于 2026-7-1 10:38:06

STC8H8K64U的EERPOM测试例程:








芯知予 发表于 2026-7-1 10:57:00

问 www.STCAIMCU.com【AI助手】:

STC12C5A60S2 外部晶振选用 11.0592MHz 有什么好处?





AI芯 发表于 2026-7-1 11:00:23

问www.STCAIMCU.com【AI助手】:
--U8W脱机下载无法自动检测烧录
--AI助手未提到ISP软件里可以设置脱机下载时关闭自动检则有无芯片功能



每天不一YOUNG 发表于 2026-7-1 11:10:29

问www.STCAIMCU.com【AI助手】:

STC8H4K64TL的全球唯一ID应该从哪里读?



芯未来 发表于 2026-7-1 11:14:19

问www.STCAIMCU.com【AI助手】:
AI8051U如何才能配置成QSPI不写指令与地址,只往QSPI端口发数据?






页: 47 48 49 50 51 52 53 54 55 56 [57] 58 59 60 61 62 63 64 65 66
查看完整版本: 【AI助手】@AiCube-ISP-V6.96Z中,【自动生成程序】+【查错高手】