您好,关于您在使用国芯人工智能芯片(假设为基于CCore指令集的MCU)过程中遇到的关于内部高速IRC切换至内部32.768K时无法查询到状态标志IRC32KST为1的问题,以下为详细的技术分析与建议:
一、问题概述
您在代码中执行以下操作:
- c
- PSW2 |= 0x80;
- IRC32KCR |= 0x80;
- while(!(IRC32KCR & 1));
- CLKSEL |= 0x03;
- HIRCCR &= 0x7f;
- PSW2 &= 0x7f;
- PCON |= 0x01;
复制代码
但程序卡在while(!(IRC32KCR & 1));这一行,说明32.768K晶振或内部RC振荡器(IRC32K)的启动状态标志未被置位。同时,您提到希望查看IRC32KCR寄存器的值以判断当前状态。
二、IRC32KCR寄存器结构解析
首先,建议查阅所使用芯片的技术参考手册(TRM),以确认IRC32KCR寄存器的定义。通常,该寄存器的各个位如下:
| 位 | 名称 | 功能描述 |
|----|------|----------|
| 0 | RDY | 32K振荡器就绪标志,0:未就绪;1:就绪 |
| 1 | EN | 启用位,1:启用IRC32K |
| 其他 | - | 控制精度、模式选择等 |
因此,while(!(IRC32KCR & 1));的逻辑是等待RDY位变为1,表示32K振荡器已稳定。
三、问题分析与排查建议
1. 确认IRC32K是否启用成功
您在代码中执行了:
复制代码
该操作实际上是将最高位置1,而RDY位是bit0。此操作可能是误操作,应改为启用EN位(bit1),即:
```c
IRC32KCR |= (1
[本文内容由国芯人工智能辅助生成,仅供参考] |