HCS08单片机改写FLASH参数之——上位机程序
0赞HCS08单片机支持在应用编程IAP,只要有合适的办法把要改写的内容传给单片机,就可以自己写稿FLASH实现永久存储。应用编程IAP折详细内容参照“AN3942”。
飞思卡尔为在线参数修改和观察变量提供了一套成熟的解决方法——Freemaster,里面有一套读写Memory和变量的协议,还留了一条自定义命令方便用户扩展。我们就是用自定义命令实现写FLASH命令。
该示例是一个波形发生器,功能是:
1、2路数字波形输出
2、第一路波形的高电平时间和低电平时间可调
3、第二路波形的上升沿相对第一路的下降沿有一个延时,该延时可调。
做出来的界面是这样的效果:
程序要实现的是点“下载参数”时通过串口发送2条命令,下面是命令示例:
首先发送“2B10150A0210E0000000000A000000140000000FB0441400AA”,单片机会有个回应。——该命令是将要执行的命令传给单片机。
接着发送“2BC63A”,单片机会有个回应。——该命令是执行最后一次传给单片机的命令。
下面是点“下载参数”对应的一段代码:
void CFreeMasterDlg::OnButton9()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
memset(dat,'\0',sizeof(char));
dat[3] = m_hi_time & 0xFF;
dat[2] = (m_hi_time>>8) & 0xFF;
dat[1] = (m_hi_time>>16) & 0xFF;
dat[0] = (m_hi_time>>24) & 0xFF;
DWORD duty_time = m_lo_time + m_hi_time;
dat[7] = duty_time & 0xFF;
dat[6] = (duty_time>>8) & 0xFF;
dat[5] = (duty_time>>16) & 0xFF;
dat[4] = (duty_time>>24) & 0xFF;
DWORD Second_time = m_delay_time + m_hi_time;//第二路波形
dat[11] = Second_time & 0xFF;
dat[10] = (Second_time>>8) & 0xFF;
dat[9] = (Second_time>>16) & 0xFF;
dat[8] = (Second_time>>24) & 0xFF;
WriteFrame(ADDR,dat);
SetTimer(1,100,NULL);
}
最后一句SetTimer是打开一个定时器,就是过一会后发送第二条命令“2BC63A”。
![(VLC]SYY7%4K5OTG_]_3]`P[4] (VLC]SYY7%4K5OTG_]_3]`P[4]](http://files.chinaaet.com/images/2012/02/27/10336423131104.jpg)

