ReleaseNote for ES8P506x
-------------------------------------------------------------------------
V0.01
-------------------------------------------------------------------------

1.	lib_timer.h
	增加函数声明FlagStatus T16Nx_GetITStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT_T16Nx_FLAG)以及FlagStatus T32Nx_GetITStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT_T32Nx_FLAG)分别用于判断T16以及T32的中断使能状态。

2. 	lib_timer.c
	增加函数FlagStatus T16Nx_GetITStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT_T16Nx_FLAG)以及FlagStatus T32Nx_GetITStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT_T32Nx_FLAG)分别用于判断T16以及T32的中断使能状态。

5.	lib_gpio.c
	lib_gpio.c修改较多，新增函数在lib_gpio.h中添加了声明，相应例程做了调整：
		1）将函数void PINT_ClearITFlag(GPIO_Pin Pin)作了修改，原函数将清除整个Word，现在更改为清除特定bit；
		2）增加函数uint32_t PINT_GETITStatus(GPIO_Pin Pin)以及函数uint32_t KINT_GETITStatus(GPIO_Pin Pin)用于判断端口中断和按键中断的使能状态；
		3）增加函数void KINT_SetKMASK(GPIO_Pin Pin, KINT_IE_Set IE)以及函数void PINT_SetPMASK(GPIO_Pin Pin, PINT_IE_Set IE)用于设置或取消屏蔽控制；
		4）增加函数uint32_t Kint_GetKMASK(GPIO_PIN Pin)以及函数uint32_t Pint_GetPMASK(GPIO_PIN Pin)用于判断是否设置屏蔽；
		5）增加函数void GPIO_SetPortTypeFromPin(GPIO_Pin Pin, GPIO_Pin_Type Type)用于设置目的管脚是CMOS还是TTL；
		6）增加函数void GPIO_SetPortFLTFromPin(GPIO_Pin Pin, GPIO_Pin_FLT FLT)用于设置目的管脚滤波使能状态；
		7）修改GPIO_InitSettingType结构体，添加管脚设置和滤波使能，修改GPIO_Init函数；
	其中，6）及7）中新增函数仅在lib_gpio.c中使用，故不在lib_gpio.h中添加声明。


6.	lib_uart.c
	增加函数uint8_t UART_AutoBaudResult(UART_TypeDef *UARTx)用于返回自动波特率监测的检测结果。
	
7.	lib_uart.h
	1）添加函数原形uint8_t UART_AutoBaudResult(UART_TypeDef *UARTx)；
	2）添加如下宏定义函数：
		/* UARTx 接收暂停使能 */
		a.	#define UART0_RxPause()     (UART0->CON0.RXI = 1)
		b.	#define UART1_RxPause()     (UART0->CON0.RXI = 1)
		c.	#define UART2_RxPause()     (UART2->CON0.RXI = 1)
		/* UARTx 接收暂停禁止 */
		d.	#define UART0_RxCont()      (UART0->CON0.RXI = 0)
		e.	#define UART1_RxCont()      (UART1->CON0.RXI = 0)
		f.	#define UART2_RxCont()      (UART2->CON0.RXI = 0)
		/* UARTx 发送暂停使能 */
		g.	#define UART0_TxPause()     (UART0->CON0.TXI = 1)
		h.	#define UART1_TxPause()     (UART1->CON0.TXI = 1)
		i.	#define UART2_TxPause()     (UART2->CON0.TXI = 1)
		/* UARTx 发送暂停禁止 */
		g.	#define UART0_TxCont()      (UART0->CON0.TXI = 0)
		k.	#define UART1_TxCont()      (UART1->CON0.TXI = 0)
		l.	#define UART2_TxCont()      (UART2->CON0.TXI = 0)



8.	lib_scu.c
	1）删除函数void PLLClock_Config(TYPE_FUNCEN pll_en, SCU_PLL_Origin  pll_origin, SCU_PLL_Out pll_out, TYPE_FUNCEN sys_pll)，增加函数void HRC_Config(TYPE_FUNCEN hrc_en, SCU_HRC_FRE hrc_fre, TYPE_FUNCEN sys_hrc)用于配置HRC时钟频率。

9.	lib_scu.h  
	1）添加函数声明void HRC_Config(TYPE_FUNCEN hrc_en, SCU_HRC_FRE hrc_fre, TYPE_FUNCEN sys_hrc)；
	2）删除PLL相关枚举；
	3）修改枚举SCU_LVDVS_xVx，删除不支持的电压；
	4）增加用于获取LVDO的值的宏函数#define SCU_LVDIFS_Get()	(SCU->LVDCON.IFS)；
	5）枚举SCU_TYPE_LVDCON中增加SCU_LVDFlag_IE用于判断中断使能状态；
	6）增加如下宏函数用于配置WAKEUPTIME寄存器：
		/* 系统唤醒时间控制 */
		#define SCU_WAKEUPTIME(X)	(SCU->WAKEUPTIME.WAKEUPTIME = ((X) & 0xFFF))
		/* 深度睡眠下系统时钟控制 */
		#define SCU_MOSC_EN(X)		(SCU->WAKEUPTIME.MOSC_EN = ((X) & 0x1))
		/* 系统时钟滤波器使能 */
		#define SCU_CLKFLT_EN(X)	(SCU->WAKEUPTIME.CLKFLT_EN = ((X) & 0x1))
		/* VR工作时钟控制 */
		#define SCU_VROSCEN(X)		(SCU->WAKEUPTIME.VROSCEN = ((X) & 0x1))
		/* 深度睡眠下SRAM低功耗使能 */
		#define SCU_STPRTNEN(X)		(SCU->WAKEUPTIME.STPRTNEN = ((X) & 0x1))
		/* 深度睡眠下LDO电压输出 */
		#define SCU_LDOLP_VOSEL(X)	(SCU->WAKEUPTIME.LDOLP_VOSEL = ((X) & 0x11))
		/* 深度睡眠下LDO低功耗使能 */
		#define SCU_LP_STOP(X)		(SCU->WAKEUPTIME.LP_STOP = ((X) & 0x1))
		/* 深度睡眠下BG低功耗使能 */
		#define SCU_BG_STOP(X)		(SCU->WAKEUPTIME.BG_STOP = ((X) & 0x1))
		/* 深度睡眠下FLASH STOP使能 */
		#define SCU_FLS_STOP(X)		(SCU->WAKEUPTIME.FLS_STOP = ((X) & 0x1))
		
10. lib_adc.h
	1）增加ADC_TYPE_BITSEL枚举，用于配置ADC分辨率选择。
	
11. lib_adc.c
	1）修改ADCInit()，增加初始化分辨率。

12. demo的更改
	1）原有demo中闪烁LED指示灯的部分，由闪烁通用开发子板上的4个LED改为闪烁母板上的LED1；
	2）原有demo中用4位数码管显示的部分改为闪烁母板上的LED1或改为UART发送；
	3）IIC模块例程中将操作EEPROM相关的例程缩减为1个，由IIC_E2prom_demo来代替，例程IIC_Master_Interrupt_demo改为使用中断方式与I2C从机进行通信；
	4）SPI模块例程增加MCU做主机时，使用中断进行收发的示例；
	5）Sleep模块增加Low_Power_Mode_demo；
	6）删除模块例程LCD、PLL、RTC、7816及Mortor；
	7）ADC及GPIO模块例程均缩减为3个；
	8）PWM模块例程删除PWM_Buzzer_demo。
-------------------------------------------------------------------------
V1.00 2021.07.27
-------------------------------------------------------------------------
2021.06.01（biyq）
1. void LightInit(GPIO_Pin Pin)中修改最后一个else if中的错误，将判断条件中的IO管脚与执行语句中的IO管脚统一为LED4_Pin；
2. 修改ADC模块例程ADC_Hardcontrol_demo，初始化ADC时将AD分辨率配置为10位，取代之前的使用6位精度的默认配置。
2021.06.03（biyq）
1. 将lib_adc.h中的ADC通道宏定义补充到20通道。
2021.06.04（biyq）
1. 修改UART模块中，不正确的注释；
2. 修改例程包中，部分例程对GPIO结构体初始化不完整的问题；
3. 修改注释中，关于时钟选择的描述，将PCLK：16M修改为PCLK。
2021.06.08（biyq）
1. LVD例程中，删除在LVD中断的等待延时。
2021.06.09
1. IAP例程中，将擦除固定为页擦，即参数R2固定为0。
2021.06.10
1. 修改UART_Byte_Bytefree_demo中的错误；
2. 将UART的TX管脚输出模式修改为GPIO_DS_Output_Normal，即普通电流驱动，以减少输出调制时波形上下边沿的毛刺。
2021.06.16
1. 修改Bootloader程序中，gpio_init函数中对TX管脚和RX管脚初始化时，结构体成员描述错误的问题；
2. 增加lib_uart.h中增加UART2的收发使能和失能。
2021.06.24
1. 修改lib_scu.h中关于HRC的错误注释；
2. 修改低功耗例程中的时钟，更改为48M，IO口全部配置为模拟输入；
3. IIC主机例程中，加入超时处理解决死等的问题。
2021.07.05
1. 修改lib_time.h，结构体T16Nx_PWMInitStruType中增加结构体成员REGBUFEN
2. 修改lib_time.c，函数T16Nx_BaseInit中添加指令，缓冲寄存器使能控制位清零
3. 修改lib_time.c，函数T16Nx_PWMOutInit中添加指令，缓冲寄存器使能控制位赋值
2021.07.05
1. 修改LVD_demo，将LVDO高电平中断改为上升沿产生中断
2. 增加例程UART_Rx_Low_demo，用于演示当RX管脚拉低时，如何规避MCU一直进接收中断的问题
3. 所有PWM例程均使能缓冲寄存器
2021.07.07
1. 删除lib_spi.h中结构体SPI_TYPE_FLAG中的无效成员
2021.07.15
1. UART模块例程UART_Frame_demo，将TB中断改为TC中断的方式，演示TC中断的使用
2. es8p5066_iap_table.c及对应头文件中，将函数名CODE_FLASH_Unlock以及CODE_FLASH_Lock变更为IAP_FLASH_Unlock以及IAP_FLASH_Lock
3. IAP_demo的main.c中在使用函数IAP_Code_PageErase前先调用IAP_FLASH_Unlock()解锁FLASH
2021.07.27
1. 修改lib_scu.h中，枚举类型SCU_TYPE_NMICS以及SUC_TYPE_Periph
2. Sleep模块增加SLEEP_Single_PowerSupply_demo用于演示单电池供电系统低功耗设计，同时将SLEEP_LVDInturrept_demo修改为电池和市电同时供电系统低功耗设计
2021.07.28
1. 修改WDT模块例程，将WWDT和IWDT计数时钟由PCLK更改为LRC
2. 删除lib_gpio.c以及lib_gpio.h中函数GPIO_TX0Config的定义和声明

-------------------------------------------------------------------------
V1.01 2022.03.08
-------------------------------------------------------------------------

2021.08.24
1. IIC例程中，优化超时处理的问题。
2021.11.1
1. IIC例程IIC\IIC_Master_And_Slave_demo\IIC_Slave_Project，修复中断服务程序中存在的问题，同时中断服务程序使用发送空闲中断取代发送缓冲器空中断的方式。
2. 增加所有程序的iDesigner例程。
3. 修改lib.printf.c库文件，增加UART_ClearITPendingBit(UART0,UART_FLAG_TC)清除发送完成中断,以适应ES8P5066芯片的iDesigner例程。
4. 由于iDesigner生成的程序较大，将Bootloader的APP_ADDR地址由0x1000修改为0x2000，以适应BOOT例程。
2021.11.11
1. 修改TIMER例程TIMER_T16Nx_Counter_light_demo及TIMER_T16Nx_Timer_demo中，Timer初始化中删除T16N1->CON2.REGBUF_EN = 0x00;
2021.12.20
1. 修改lib_uart.c及头文件，删除类型UART_TYPE_TRBIM，增加类型UART_TYPE_TBIM及UART_TYPE_RBIM
2021.12.28
1. 修改IAP例程，删除单页擦函数的sector参数，固定写0。



2022.01.02（fengc）
1.修改单电源供电例程深度睡眠配置中SCU_LDOLP_VOSEL为01（原来为00），推荐设置。并去除LVD检测和IWDT中断唤醒。
2022.01.10（fengc）
1.修改单电源供电例程中空闲引脚为模拟输入，以降低功耗。
2022.01.13（fengc）
1.增加系统时钟为48Mhz时旁路时钟滤波器的功能。
2022.01.17（fengc）
1.修改定时器捕获例程，删除手动重载捕获计数器的操作。
2022.01.21（fengc）
1.修改定时器捕获例程，将定时器捕获中断使能放在定时器使能后，防止上电前高频信号直接输入，导致定时器不工作。
2022.01.24（fengc）
1.去除判断IWDT是否硬件使能的操作；
2.修改GPIO_Light例程中断程序中误注释错误。


2022.03.01(biyq)
1.更新例程SLEEP_LVDInturrept_demo和Low_Power_Mode_demo,将函数SCU_LDOLP_VOSEL的输入参数更改为1，使之符合数据手册的描述。
2022.03.01（zhuxf）
1.在IWDT例程中调用IWDT_Init函数前，添加了“当IWDT是通过配置字使能时”的注意事项。

-------------------------------------------------------------------------
V1.02 2022.08.04
-------------------------------------------------------------------------
2022.7.1
更新例程包中ES8P5066改为ES8P506x
2022.07.19(biyq)
1.修复lib_iic.c中I2C_GetITStatus函数的bug；
2.修复lib_spi.c中SPI_GetITStatus函数的bug；
3.更新lib_iic.h中枚举类型IIC_TYPE_TRBIM中的注释;
4.IIC_Master_Interrupt_demo中，把发送起始位和停止位从轮询改为中断，并且把发送数据从TB中断改成了TIDLE中断；
5.IIC_Master_Project中，把发送数据从判断TB改成了先清TIDLE中断标志位后判断TIDLE；
6.IIC_Slave_Project的中断服务程序中，把中断有效判断从只判断IF，改成了IE&IF；
7.去除IIC.c 中IICReadByte和IICWriteByte函数；
8.更正IIC_E2prom_demo中e2prom_byte_write和e2prom_page_write函数中返回值的判断逻辑；
9.IIC初始化统一配置FIFO为发送缓冲器字空和接收缓冲器字节满；

2022.7.29
1. 删除无用的.ini文件
2. 修复lib_wdt.c及lib_wdt.h文件中wwdt函数缺失问题
3. 修复例程SLEEP_LVDInturrept_demo及WWDT_demo中，中断服务程序只判IF的bug
4. 添加Apache license

2022.8.3
1. 将Bootloader例程优化等级统一为O2，ROM size统一为0x1000
2. 将Bootloader例程所对应的APP例程的起始地址统一为0x1000

-------------------------------------------------------------------------
V1.03 2023.02.13
-------------------------------------------------------------------------
2022.8.18
1. 更新.gitignore文件，避免后续add操作时添加无用的文件；
2. 删除无用的中间文件；

2022.9.29（Lisq）
1.PWM例程优化：将使用MAT清零CNT的代码改为TOP清零CNT。

2022.12.12（Zhuxf）
BootLoader例程中的JumpToApp函数增加“SCU->PROT.Word = 0x55AA6996;”，以免用户单独调用JumpToApp时SCU寄存器无法写入。

2023.02.03（Lisq）
1.lib_gpio.h补充GPIO_SetDirRegFromPin(GPIO_Pin Pin, GPIO_Direction Dir)声明；
2.增加RTC_1302例程。

2023.02.16（shicc）
1.将BootLoader Demo中BootLoader中的APP_ADDR 从0x2000改为0x1000；

-------------------------------------------------------------------------
V1.04 2023.11.17
-------------------------------------------------------------------------
2023.03.03（zhuxf）
1.XTAL_8M_demo更新，切换HOSC时钟前先配置OSCI和OSCO管脚为模拟口

2023.06.28（Lisq）
1.RTC_1302_demo更新，使能UART引脚内部弱上拉。

-------------------------------------------------------------------------
V1.05 2024.03.05
-------------------------------------------------------------------------
2024.03.05（Lisq）
1.lib_scu.c更新，SCU_OpenXTAL函数增加“SCU->WAKEUPTIME.WAKEUPTIME = 0xFFF;”，以增强XTAL_RDY的可靠性。

-------------------------------------------------------------------------
V1.06 2025.07.15
-------------------------------------------------------------------------
2024.09.11（Lisq）
1.优化模拟EEPROM例程Flash_Emulate_Eeprom_demo：简化页状态的判断。

2024.12.11（Lisq）
1.修复I2C写读EEPROM例程写16字节数据越界的bug。

2025.03.31（Lisq）
1.新增针对ES8P5062的例程：UART_IO_to_RX_demo。

2025.06.03（Lisq）
1.优化函数T16Nx_SetCNT0和T16Nx_SetPRECNT，增加对SYNC的判断。

-------------------------------------------------------------------------
V1.07 2026.02.09
-------------------------------------------------------------------------
2025.07.28（Shenyj）
1.EEPROM例程添加连续接口。
2.修复es8p5066 bootload的uart接收判断问题，uart帧校验错误后不会在进if判断真的分支中去。

2025.11.11（Lisq）
1.优化PWM触发ADC例程，解决PWM无法触发ADC的问题。
