关于8H2K08U的BGV读取值问题
本帖最后由 DebugLab 于 2024-9-10 13:30 编辑各位大佬, 我在使用8H2K08U调试ADC想用内部1.19V 基准,按照范例程序代码读取CHIPID的1.19V实际值(BGV=1193mv)和 ISP 程序下载时显示的内部参考电压值(1189 mV )有差异.
请问以下代码是否有问题呢,谢谢!
#BGV读取代码
=======================
.
.
.
#define CPUIDBASE 0xfde0
#define VREF_ADDR (*(unsigned int volatile xdata *)(CPUIDBASE + 0x07))
.
.
.
printf("BGV=%01u,mv",(u16)((VREF_ADDR >>8) +VREF_ADDR)); //串口发送BGV值
.
#串口助手返回值
============================================
.
.
.
接收:BGV=1193,mv
接收:BGV=1193,mv
接收:BGV=1193,mv
接收:BGV=1193,mv
接收:BGV=1193,mv
接收:BGV=1193,mv
接收:BGV=1193,mv
#ISP下载返回值
==============================================
正在擦除目标区域 ... 完成 !
正在下载用户代码 ... 完成 !
正在设置硬件选项 ... 完成 !
更新后的硬件选项为:
. 系统ISP工作频率: 24.000MHz
. 内部IRC振荡器的频率: 24.000MHz
. 掉电唤醒定时器的频率: 35.375KHz
. 振荡器放大增益使能
. P3.2和P3.3与下次下载无关
. 上电复位时增加额外的复位延时
. 复位引脚仍为复位脚
. P5.4口不切换为P1.2
. 不交换P1.0口和P1.1位置
. 检测到低压时不复位,可产生低压中断
. 低压检测门槛电压 : 2.00 V
. 上电复位时,硬件不启动内部看门狗
. 上电自动启动内部看门狗时的预分频数为 : 256
. 空闲状态时看门狗定时器停止计数
. 下次下载用户程序时,将用户EEPROM区一并擦除
. 下次下载用户程序时,没有相关的端口控制485
. 下次下载时不需要校验下载口令
. 未使能芯片的仿真功能
. 内部参考电压: 1189 mV (参考范围: 1100~1300mV)
芯片出厂序列号 : F894C9B307B0C7
单片机型号: STC8H2K08U
软件协议, V3.0: 7.4.7U
. 用户设定频率: 24.000MHz
. 调节后的频率: 24.000MHz ( 主时钟分频系数 = 1; )
. 频率调节误差: 0.000%
操作成功 !(2024-09-10 11:45:21)
printf("BGV=%01u,mv",(u16)(VREF_ADDR)); 4 = 1189 >> 8;
1193 = 4 + 1189;
邮箱 发表于 2024-9-10 13:10
4 = 1189 >> 8;
1193 = 4 + 1189;
谢谢大佬! 还真的是这样. 也就是说定义VREF_ADDR直接是16位无符号类型数据,不用高8位和低8位相加,我是看到范例都是高低8位分开处理以为需要合并计算再使用. 定义的时候是unsigned int是16位,所以打印的时候也不用强制类型转换吧。更不用类似把unsigned char累加吧。 soma 发表于 2024-9-10 20:14
定义的时候是unsigned int是16位,所以打印的时候也不用强制类型转换吧。更不用类似把unsigned char累加吧 ...
是的,可以不用强制转换.我是还有其他类型数据需要用printf打印所以就统一加了强制类型转换.
页:
[1]