//
/// 以下程序注释由成都地质学院霸王猫添加,引用时请尊重作者劳动成果,标明引用者来自成都地质学院霸王猫。
//
UBYTE vpc3_cfg_data_update(void)
入口参数:
无
出口参数:
无
返回值:
VPC3_CFG_FINISHED/VPC3_CFG_CONFLICT
调用格式:
#define VPC3_SET_CFG_DATA_UPDATE() vpc3_cfg_data_update()
dp_sys.vpc3_con = VPC3_SET_CFG_DATA_UPDATE();
函数功能:
更新配置数据,确认CHK-CFG中断。
源程序:
/*---------------------------------------------------------------------------*/
/* */
/* UBYTE vpc3_cfg_data_update(void) */
/* */
/* function: Update Configuration Data */
/* */
/* parameter: none */
/* return value: VPC3_CFG_FINISHED: The transferred configuration is OK. */
/* VPC3_CFG_CONFLICT: Repeat verification of the requested */
/* configuration. */
/* */
/*---------------------------------------------------------------------------*/
UBYTE vpc3_cfg_data_update(void)
{
vpc3->len_read_cfg_data = vpc3->len_cfg_data;
memcpy( VPC3_GET_READ_CFG_BUF_PTR(), VPC3_GET_CFG_BUF_PTR(), vpc3->len_cfg_data);
return (vpc3->ctrl_reg.rd.user_cfg_data_ok);
}
//-------------------------------------------------------------------------------------
1. 执行下面语句
//-------------------------------------------------------------------------------------
vpc3->len_read_cfg_data = vpc3->len_cfg_data;
已知:
(1)、vpc3->len_cfg_data = 配置缓冲器长度(寄存器地址31H)
目的:
配置缓冲器长度拷贝到“读配置缓冲器长度”
结果:
vpc3->len_read_cfg_data(寄存器地址33H) = 配置缓冲器长度
//-------------------------------------------------------------------------------------
2. 执行下面语句
//-------------------------------------------------------------------------------------
memcpy( VPC3_GET_READ_CFG_BUF_PTR(), VPC3_GET_CFG_BUF_PTR(), vpc3->len_cfg_data);
已知:
(1)、vpc3->len_cfg_data = 配置缓冲器长度(寄存器地址31H)
(2)、VPC3_GET_CFG_BUF_PTR() = 调用宏读取“配置缓冲器”段基址
(3)、VPC3_GET_READ_CFG_BUF_PTR() = 调用宏读取“读配置缓冲器”段基址
目的:
配置数据从“配置缓冲器”段基址指定的地址拷贝“vpc3->len_cfg_data”指定的长度到“读配置缓冲器指定的地址”空间。
结果:
数据拷贝完成。
//-------------------------------------------------------------------------------------
3. 执行下面语句
//-------------------------------------------------------------------------------------
return (vpc3->ctrl_reg.rd.user_cfg_data_ok);
原理:
vpc3_cfg_data_update()函数是在中断服务程序中调用的。
New_Prm_Data, New_Cfg_Data这两个中断不能通过写IAR来响应中断。这两个状态机通过用户应答(如User_Prm_Data_Okay等)来清除中断。
目的:
用户肯定的响应CHK-CFG报文,清除New_Cfg_Data中断位。
结果:
中断确认寄存器中的CHK-CFG中断位清除。