找回密码
 立即注册
查看: 8367|回复: 23

32G12K128系列超64K程序演示

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-4-5 19:53:34 | 显示全部楼层 |阅读模式
32G12K128系列有128K程序空间,
Keil环境下新建的项目程大小默认最大只能为64K
下面详细讲解
Keil中建立超64K程序大小的项目设置和注意事项
1、 新建项目,如下图
STC32G12K128系列超64K程序演示-1.png
单片机型号请选择“STC MCU Database”中的“STC32G12K128 Series”


2、 项目设置,如下图
STC32G12K128系列超64K程序演示-2.png
注:
a)   CPU模式必须配置为Source模式
b)   Memory模式建议设置为Xsmall模式
c)    超64K的ROM模式必须设置为Huge模式
d)    ROM配置保留了16K的EEPROM,程序空间从地址0xFE4000开始,大小为112K(0x1C000),用户可工具自己实际的需求进行修改


3、 设置HEX格式,如下图
STC32G12K128系列超64K程序演示-3.png
超64K的HEX文件格式必须设置为Hex-386格式

4、 添加代码文件到项目中即可编译成功

5、 其它注意事项:
a)   单个文件的代码大小必须小余64K。若大于或等于64K,则需要将代码分割为多个代码文件
b)   单个代码数据表格的数据量必须小余64K。若大于或等于64K,则需要将数据表格分割为多个数据表格
c)   使用code关键字定义的数据表格,Keil会强制分配到FF:0000H~FF:FFFFH区域(例如:char code CODE_STR[] ="64K地址范围内数\xfd据表格定义演示";)若需要定义超64K地址范围的数据表格,则需要使用ecode关键字,(例如:char ecode ECODE_STR[] = "超64K地址范围内数\xfd据表格定义演示";)
6、  ISP下载设置及测试结果
STC32G12K128系列超64K程序演示-4.png

STC32G12K128系列超64K程序演示-5.png

测试代码如下:
main.c
  1. #include "stc32g.h"
  2. #include "stdio.h"
  3. #define FOSC        11059200UL              //定义系统工作频率,UL尾缀指定数据为无符号长整型
  4. #define BAUD        (65536 - FOSC/4/115200)
  5.                                             //汉字'数'在Keil会显示为乱码,需加\xfd修正
  6. char  code CODE_STR[] = "64K地址范围内数\xfd据表格定义演示";
  7. char ecode ECODE_STR[] = "超64K地址范围内数\xfd据表格定义演示";
  8. extern char ecode HUGE_STR1[63*1024UL];     //声明外部表格数据
  9. extern char ecode HUGE_STR2[45*1024UL];
  10. void main()
  11. {
  12.     WTST = 0;                               //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  13.     CKCON = 0;                              //提高访问XRAM速度
  14.     EAXFR = 1;                              //扩展寄存器(XFR)访问使能
  15.     P0M0 = 0x00; P0M1 = 0x00;               //配置所有的I/O口为准双向口模式
  16.     P1M0 = 0x00; P1M1 = 0x00;
  17.     P2M0 = 0x00; P2M1 = 0x00;
  18.     P3M0 = 0x00; P3M1 = 0x00;
  19.     P4M0 = 0x00; P4M1 = 0x00;
  20.     P5M0 = 0x00; P5M1 = 0x00;
  21.     P6M0 = 0x00; P6M1 = 0x00;
  22.     P7M0 = 0x00; P7M1 = 0x00;
  23.    
  24.     SCON = 0x52;                            //若要使用Keil的printf和默认的putchar函数,必须初始化串口的TI标志为1
  25.     S1BRT = 0;                              //选择定时器1为串口1的波特率发生器
  26.     T1x12 = 1;                              //设置定时器1为1T模式
  27.     TMOD &= ~0xf0;                          //设置定时器1为模式0(16位自动重装载模式)
  28.     TH1 = BAUD >> 8;                        //设置定时器1重装值
  29.     TL1 = BAUD;
  30.     TR1 = 1;                                //启动定时器1
  31.    
  32.     printf("STC32G超64K演示程序 !\n");
  33.    
  34.     printf("%s\n", CODE_STR);
  35.     printf("%s\n", ECODE_STR);
  36.     printf("%s\n", HUGE_STR1);
  37.     printf("%s\n", HUGE_STR2);
  38.    
  39.     while (1);
  40. }
复制代码


table1.c
  1. char ecode HUGE_STR1[63*1024UL] = "定义大数\xfd据表格,单个表格数\xfd据大小必须小余64K";
复制代码


table2.c
  1. char ecode HUGE_STR2[45*1024UL] = "定义大数\xfd据表格,单个文件内的表格数\xfd据大小必须小余64K";
复制代码



STC32G12K128系列超64K程序演示.zip

73.44 KB, 下载次数: 348

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-5 20:58:48 | 显示全部楼层
强!!!
不停地学习
回复

使用道具 举报 送花

7

主题

26

回帖

132

积分

注册会员

积分
132
发表于 2023-4-28 23:14:32 | 显示全部楼层
回复

使用道具 举报 送花

4

主题

12

回帖

186

积分

注册会员

积分
186
发表于 2023-5-10 23:00:58 | 显示全部楼层
正为之所困!非常感谢!!!
回复 支持 反对

使用道具 举报 送花

31

主题

45

回帖

364

积分

中级会员

积分
364
发表于 2023-5-29 09:18:31 | 显示全部楼层
请教:为什么不使用默认的定时器2?

点评

串口1的波特率发生器选择定时器1或者定时器2都可以 范例选择定时器1仅仅是个人习惯而已  详情 回复 发表于 2023-5-29 09:35
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-5-29 09:35:29 | 显示全部楼层
yzq*** 发表于 2023-5-29 09:18
请教:为什么不使用默认的定时器2?

串口1的波特率发生器选择定时器1或者定时器2都可以
范例选择定时器1仅仅是个人习惯而已
回复 支持 1 反对 0

使用道具 举报 送花

31

主题

45

回帖

364

积分

中级会员

积分
364
发表于 2023-5-29 10:19:27 | 显示全部楼层
zh*** 发表于 2023-5-29 09:35
串口1的波特率发生器选择定时器1或者定时器2都可以
范例选择定时器1仅仅是个人习惯而已 ...

好的,谢谢。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-04-22 08:32:33

9

主题

76

回帖

537

积分

高级会员

积分
537
发表于 2024-4-9 18:30:57 | 显示全部楼层
感谢楼主分享,帮助很多
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:361
  • 最近打卡:2025-05-01 00:15:28

0

主题

43

回帖

696

积分

高级会员

积分
696
发表于 2024-5-2 11:46:44 | 显示全部楼层
谢谢分享,学习了
回复 支持 反对

使用道具 举报 送花

0

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2024-9-3 18:36:51 | 显示全部楼层
请教一下我这个是什么问题
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 21:52 , Processed in 0.144513 second(s), 126 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表