首页 > 修改教程 > GG修改器(游戏修改必备)_GG游戏修改器怎么用
GG修改器(游戏修改必备)_GG游戏修改器怎么用
  • gg修改器最新版
  • 大小:6.09MB版本:v7.63
  • 语言:简体中文系统:Android
绿色无毒,安全可靠!部分设备误报拦截请通过!

GG修改器(游戏修改必备)_GG游戏修改器怎么用

作者:佚名 来源:网友分享 日期:2024-04-26 13:06:15

大家好,今天小编为大家分享关于GG修改器(游戏修改必备)_GG游戏修改器怎么用的内容,赶快来一起来看看吧。

大家好我是小火,想学习单片机的同学可以关注、私信我。今天我们接着说上次GD32与STM32的内容,上次我们说到了系统部分,接下来我们继续分享。

内部 Flash

1.我们要使用芯片进行开发项目就要知道如何保护我们的东西。 GD 的 Flash 是自己的专利技术,STM 的 Flash 是第三方提供的,所以 GD 的 Flash 和 STM 的 Flash 有些许差异。GD 的擦除时间会长一点。

在写完 KEY 序列以后,需要读该位,确认 key 已生效。 所以,这里应该插入

While( ! (FLASH->CR & 0x200 ) ); // Wait OPTWRE

或可简单插入 两个 NOP。

__NOP();

__NOP();

在 ST 库中,只有

FLASH_Status FLASH_EraseOptionBytes(void)

FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data) FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Pages) FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState) 四个函数需要修改。

2.IAP 在应用中编程GD32 由于自有 flash 的 0 访问时序,同 STM32 在 Flash 的 Erase 和 Program 上 存在差别,GD32 的 Erase 和 Program 时间比 STM32 的稍微长些,建议对 Erase 和 Program 时间进行修改。

将宏定义

#define EraseTimeout ((uint32_t)0x000B0000)

#define ProgramTimeout ((uint32_t)0x00002000)

修改为:

#define EraseTimeout ((uint32_t)0x000FFFFF)

#define ProgramTimeout ((uint32_t)0x0000FFFF)

备 注 : Erase 和 Program 时 间 宏 定 义 在 stm32f10x_flash.c 源 文 件 中 (路径:..LibrariesSTM32F10x_StdPeriph_Driversrc)

3.用 IAR 下载配置

在批量生产的时候首先会烧写一个 USB 的 boot,这个 boot 自动运行后在由上 位机软件进行烧写应用程序。如果 boot 程序不能自动运行则需要重新插拔一 次电源。给生产造成一些麻烦。产生不能自动运行程序的原因是如果程序设置 读保护的话需要等待 FLASH_CR 的第 9[OPTWRE]位为 1.如果没有置位的话继续 执行就会出错。由于 ST 的执行速度慢,程序执行到读 FLASH_CR 寄存器的时候 该位已经置 1,GD 的执行速度比较快,程序运行到这的时候该位还没置 1,因 此需要在 FLASH_ReadOutProtection 函数里面添加一些轮询该位为 1 或者加一 些延时。

ISP 烧写软件

1.ISP 烧写(建议使用官方烧写软件)GD32 芯片内部 flash 同 STM32 有区别

建议下载最新版本的 MCUISP。另外 GD32 也有专门的 烧写软件。如果使用自制的 ISP 软件或脱机编程器,实现 ST 和 GD 完全兼容,建议修改 以下参数。

1.页擦除等待超时时间增加至 300ms,整片擦除等待超时时间增加至 3s 左 右。

2.字编程等待超时时间增加至 2ms,页编程等等超时时间增加至 300ms。

关于I/O 口部分

1.IO 口外部中断使用方法;在关闭期间,如果外部引脚有电平的变化,在使用 IMR 打开中断后会马上进 入中断服务程序。理论是打开中断前,不管管脚是否有电平的变化,都不会影 响到打开后的中断响应。

所以解决方法就是通过禁用上升沿或者下降沿检测寄存器来开关中断,不能使 用 IMR 屏蔽寄存器。程序如下:

EXTI->FTSR &= ~EXTI_Line3; //关闭沿检测,以达到关闭中断的 目的,下降沿使用 FTSR 寄存器,上升沿使用 RTSR 寄存器

EXTI->PR = EXTI_Line3;

EXTI->FTSR |= EXTI_Line3;

2.在使用低功耗的情况下,PA8 会被 MCU 在内部被设置为地 PA8 复用为 MCU 内部频率输出,超低功耗设置时需要悬空,在待机模式,PA8 悬空不用。在使用低功耗情况下,把软件全部端口(A-F)时钟关掉,无论是否有该端口。如果遇到脉冲群冲击管脚,我们需要在进入中断后关闭中断。

定时器部分

1.定时器输入捕获模式需要软件清中断;STM 定时器输入捕获模式默认能硬件清中断,GD 为了更加严格要求配置,需要做软件清中断;软件清除标志位。

2.定时器的用法上有什么差异呢?

脉冲计数模式下,装载值必须设置为比预期值大,否则不计数 在 ST 上如果重载值不设置(初始为 0)的时候,CNT 可以正常计数。 在 GD 上如果重载值不设置保持初始为 0 的时候,会因为重载值为零,即便是 来一个脉冲也会导致所有的寄存器复位从而不能正常计数。

3.Timer、ADC 模块的触发信号宽度要求

由于内部有高速和低速两条外围总线,Timer、ADC 模块和其他外设共同使用 这两个总线。GD32F103/101 系列 Flash 128KB 及以下的型号,Timer、ADC 等 模块识别触发信号的条件是触发信号宽度大于模块所在总线的时钟宽度。

串口 USART

USART 连续发送数据字节有空闲位。对于一般的通讯来说,不会有影响,只对于一般在通讯上有特殊协议的,才会 产生数据不准确的情况。所以,特定情况,修改程序

. I2C 总线

GD 的 I2C 相对 STM 的来说要少一个标志位

1.宏地址定义改变

#define I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED ((uint32_t)0x00060002)

#define I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ((uint32_t)0x00070002)

  1. 硬件 I2C 在会在向从机发送 7bits 地址完成后,从机还没来得及识别。

我们可以在发送完 7bits 后加个延时,让从机完全识别: I2C_Send7bitAddress(I2C1, EEPROM_ADDRESS, I2C_Direction_Transmitter); {

int i = 0xfff;

while(i –);

}

  1. 检测 ADDR 不能使用 I2C_CheckEvent 函数,因为他会清除 ADDR,可以使用 I2C_GetFlagStatus 函数。

就是把

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

改为 while(!I2C_GetFlagStatus(I2C1, I2C_FLAG_ADDR));

4、还有个关于编程步骤的严谨性,跟 STM 想比,我们是先 Clear_ACK,再 Clear_ARRD。

ADC的采样时ADC的启动分为两个方面。1. 当 ADON=0 时写入 1 后,需要等待一段时间 t_WAIT,如果用 ST 库的话 就在 ADC_CMD 后面加 20us 左右的延时。 2. 如果采用中断获得采样数据后,需要软件清除中断。

希望以上的知识能够给大家提供帮助,这期我们先分享到这里,觉得有用的可以给个三连!想要学习的资料的可以私信我。

以上就是关于GG修改器(游戏修改必备)_GG游戏修改器怎么用的全部内容,希望对大家有帮助。

相关文章

热门下载

大家还在搜