- 打卡等级:初来乍到
- 打卡总天数:1
- 最近打卡:2024-07-05 16:23:47
中级会员
- 积分
- 487
|
发表于 2023-3-30 11:41:16
|
显示全部楼层
本帖最后由 晓奇 于 2023-3-30 12:40 编辑
总结一下,我把修改部分整理出来给需要的同学参考,对转换其他代码有点用
为了稳妥起见把原工程文件复制一个出来修改一下新的目录名,建议简短、英文加数字、别用符号
下面开始修改:(我习惯用UEDIT来做)
1.找到并复制一个stc32g.h进来
2.在文件stc.h里面用stc32g.h替换stc8h.h
3.在文件uart.h里面把xdata改为edata,不改也行,在宏定义函数BR(n)里面的65536前添加(DWORD)否则251系统会报错
4.打开uart.c修改里面的EUASB的用法,因为在8h里只是一个宏定义常数数据,而在32g里面他是sbit定义的可位寻址的位变量
a.把IE2 &= ~EUSB替换为EUSB=0,把IE2 |= EUSB替换为EUSB=1.
b.xdata -> edata
c.Count7F全部删掉,没有用,估计原作者本来想用的,后来忘了又另外重新定义了一个IspCount7F;
d.AUXR |= T1x12; 也是宏定义与sbit的不同,改为T1x12 = 1;//1T模式
AUXR |= T2x12; -> T2x12 = 1; AUXR |= T2R; -> T2R = 1; IE2 |= ES2; -> ES2 = 1;
if(S2CON & S2TI) -> if( S2TI ) S2CON &= ~S2TI; -> S2TI =0;
if (S2CON & S2RI) -> if ( S2RI ) S2CON &= ~S2RI; -> S2RI =0;
e.S2CON &= ~S2TB8; -> S2TB8 = 0;
把 if (!P)
{
S2CON |= S2TB8;
}
else
{
S2CON &= ~S2TB8;
}
直接换成一句
S2TB8 = !P;
同样: if (P)
{
S2CON |= S2TB8;
}
else
{
S2CON &= ~S2TB8;
}
直接换成一句
S2TB8 = P;
S2CON |= S2TB8; -> S2TB8 = 1;
uart.c完成,保存一下
5.打开 usb.c在usb_init()里面有一句 IE2 |= EUSB; 把他改成 EUSB = 1; 完成,保存
6.打开main.c,端口设置都在这里,还有其他设置,寄存器的操作8h和32g不同要仔细核对头文件定义方式
a. sys_init()里面头二行换成:
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
b. 下面这两行
P_SW1 |= UART1_S2; //UART1(RxD_2/P3.6, TxD_2/P3.7)
P_SW2 |= UART2_S1; //UART2(RxD2/P1.0, TxD2/P1.1)
改成:
S1_S1 = 0; //UART1 switch to, 00: P3.0 P3.1, 01: P3.6 P3.7, 10: P1.6 P1.7, 11: P4.3 P4.4
S1_S0 = 1;
S2_S = 0; //选择串口2通道 0: P1.0, P1.1; 1: P4.6, P4.7
7.keil打开原来的工程.uvproj,进入工程设置:
a. Device 里面把芯片改为32g;
b. Target 下设置内存模式为 XSmall,右边的4-Byte...勾上
c. Output选择输出文件格式为HEX-386,别忘了左边打个勾
c. 把各种文件的路径设置一下,不喜欢都聚在一起,分开存放比较清爽。头文件都在inc目录下必须要设置,不然keil找不到
可以编译一下看看有没有遗漏的
写入芯片看看,一举成功在系统硬件管理器里面多了两个串口
读通高手的源代码是一个既痛苦又兴奋的过程,痛苦的是一开始很多东西无法理解--看不懂,兴奋的是经过不懈地努力逐渐投入了--懂了一点,
今天把这个修改的过程记录下来重新演示一遍,实际上就是一个学习提高的过程,高兴
|
|