2025年5月28日 10点58分
-更新DDS芯片AD9833驱动例程，可以设置DDS芯片0~25Mhz下0.1Hz精度的正弦波，方波，三角波
-具体接线方式请参考文件夹内的实物接线图图片

2025年5月13日 09点08分
-更新MPU6050陀螺仪读取例程，可以通过USB-CDC接口直接读取陀螺仪的加速度和角速度信息
-具体接线方式请参考文件夹内的实物接线图图片

2025年4月26日 11点27分
-Auto_Keil更新保存地址使用相对地址，以防止初次编译出错

2025年4月17日 18点58分
-修复有关自动获取时钟时，可能会错误关闭总中断的问题

2025年4月17日 15点03分
-修复有关Timer11中断函数设置中的一处数组越界问题

2025年4月14日 16点42分
-修复协程部分中，task_end的等待问题
-增加task_while参数，推荐调用方式为task_while(1){...};task_break(条件);
-修复独立例程9-使用协程完成多任务调度内的注释错误

2025年4月9日 14点22分
-更新定时器部分库函数，支持外部脉冲计数
-每次获取后自动清零，需注意定时器的外部脉冲计数引脚是固定的
-更新独立例程2设置定时器及外部中断部分(T0,T1,T2,T3,T4,T11)
-使用USB-CDC显示程序主动触发的脉冲和读取到的定时器脉冲数据

2025年4月8日 12点32分
-更新独立例程10 协程应用案例集锦
-内部包括三个小的协程应用案例，分别是
-实验箱实现的简易红绿灯控制
-实验箱实现的变调蜂鸣器声音输出
-实验箱实现的矩阵按键消抖检测并显示
-三个小例程全部加入USB-CDC库，可以通过USB不断电进行下载

2025年4月8日 11点01分
-协程部分更新支持task_while循环
-更改task_for_end为task_break,使其在for和while下都能作为结束标志
-更改task_if为task_wait,方便理解

2025年4月7日 11点25分
-更改获取IRC主频的方式，防止反复初始化导致频率参数异常问题
-修复EEPROM独立例程中，在EEPROM操作函数前使用定时器函数导致异常问题

2025年4月5日 07点48分
-调整EEPROM部分独立例程为保存一个数字和读取数字
-同时修改为使用USB-CDC接口进行数据交互，不需要额外的USB转串口了

2025年4月3日 10点32分
-修复因为数据宽度不足导致初始化PWM时赋值失败的情况
-目前输入模式不支持输入低频率信号（暂未处理输入捕获溢出情况）
-等待后续更新支持，目前40Mhz主频大概可以支持到最低2Khz正常捕获

2025年4月2日 12点22分
-PWM库函数部分更新输入捕获部分，支持同时四路占空比和周期捕获
-或者同时8路周期捕获
-捕获返回数据可选择ms(毫秒)、us(微秒)、khz(千赫兹)、hz(赫兹)四种单位
-捕获返回占空比数据为float数据，更加精准
-输出部分新增可设定互补输出同极性输出

2025年3月29日 09点27分
-协程部分更新支持for循环，可以使用task_for来进行循环执行了
-task_for支持嵌套，但是每次调用task_for需要和task_for_end配对
-task_for(init,cnt){循环代码}task_for_end(ifx)中，支持再调用task_delay和task_if
-目前可覆盖95%以上应用场景，for循环也不会堵塞其他任务啦

2025年3月28日 07点24分
-更新独立例程9-使用协程完成多任务调度
-新增协程部分库，方便用最简单的方式实现多线程应用
-协程支持单次执行、循环执行、延时执行、条件执行
-协程部分可移植性极高，可覆盖90%以上应用场景

2025年3月27日 16点21分
-添加Auto_Keil工具，使得工程设置可以不用手动设定
-只需要创建好工程后（选择完型号），关闭工程并双击Auto_Keil.exe工具即可
-Auto_Keil更新了优化set_io.c能力，可以将未使用的IO组别解析屏蔽，以优化CODE占用

2025年3月20日 17点02分
-修正部分重名错误，改为#define定义
-这样只要内容一致，多次定义也不会报错

2025年3月20日 15点17分
-更新库函数使用说明SPI、PWM部分参数配置表
-添加PWM部分四个应用例程
-完善EEPROM部分的详细说明

2025年3月19日 17点24分
-修复set_int.h和ioint.h中的命名问题
-增加了PWM部分的时钟设置
-将所有时钟部分强制设置为统一内存地址，这会报L30内存重叠错误，屏蔽即可
-新的时钟获取逻辑更改为一次获取后一直使用，不会每个外设部分都重新获取一遍
-添加MDU和FPMU库到所有的工程
-增加REMOVEUNUSED修复补丁到头文件中

2025年3月18日 18点39分
-更新I2C部分的参数配置表，命令配置表
-增加SPI部分更改为单线SSC接口的使用示例

2025年3月12日 11点24分
-修改库函数使用说明串口部分的参数表格式
-增加参数格式说明
-增加ADC部分的参数配置表说明
-增加EEPROM部分库函数的说明
-补充EEPROM部分的示例程序

2025年3月11日 17点42分
-调整库函数使用说明的参数配置表位置
-调整ADC部分使用举例的格式
-增加定时器和I/O中断、传统的INT中断部分设置用户中断回调函数示例
-修正传统INT中断部分，有关INT序号大小写的错误

2025年3月10日 12点57分
-完善库函数使用说明的ADC部分，增加更多的示例
-增加ADC部分的详细解释
-完善库函数使用说明的I2C部分，SPI部分
-增加库函数使用说明的PWM部分

2025年3月8日 13点38分
-更新库函数使用说明文档的串口部分，增加了7个使用示例
-修改了串口部分的详细解释部分，更容易理解
-更新库函数使用说明文档的SPI部分内容
-补充库函数使用说明文档的ADC部分的示例代码

2025年3月6日 14点33分
-更新库函数使用说明文档中的ADC部分、I2C部分
-优化部分内容排版

2025年3月3日 13点40分
-更新EEPROM部分库函数，提供EEPROM基础操作函数set_eeprom_base()
-set_eeprom_base支持以下参数Read_Byte,Read_Buff,Write_Byte,Write_Buff,Erase_Sector,Erase_Sectors
-可以支持单字节或者缓冲区模式的读写，单扇区或者连续扇区的擦除
-同时，提供了带有均衡磨损的变量存储函数，set_eeprom_mode()和set_eeprom_sync()
-优先推荐使用以上的两个函数，基础操作函数可以在有特殊需求时使用
-使用方式是先定义一个变量 int num; 然后调用函数set_eeprom_mode(Hex_Mode,&num,sizeof(num));
-即可将变量绑定到EEPROM中，此时通过set_eeprom_sync(Push);即可实现变量->EEPROM存储方向的同步
-使用set_eeprom_sync(Pull);即可实现变量<-EEPROM存储方向的同步，使用上十分方便。
-默认可以绑定10个变量，可以在set_eeprom.h文件中修改EEPROM_Pack_Max来增加绑定数量
-使用中，会自动实现均衡磨损，存储满时会重新擦除后存储，可以将存储寿命等效提高十几倍(仅存储几个变量时)
-(需要注意的是，绑定顺序改变会影响读取，如果改变了变量存储顺序，需要重新Push后再Pull才能正确)

2025年2月26日 23点26分
-更新pwm部分库函数，支持8个pwm通道占空比可调
-pwm部分提供一个void set_pwm_duty(pwm_name pwm, float duty);
-可在配置完成后更改占空比使用
-pwm部分支持死区设定，范围0~1000clk(clk为pwm输入时钟)
-pwm增加支持互补输出，支持单独p通道或者单独n通道输出
-设置周期支持单位hz和khz，占空比支持单位%，死区设置支持单位clk
-使用举例：set_pwm_mode(Pwm1, Pwm1_P00_01, "10khz", "80%", Pwm_End);
-意为设置Pwm1通道切换到P00和P01， 周期为10khz，占空比为80%

2025年2月19日 13点23分
-更新spi部分库函数
-SPI库函数支持3个SPI，分别是SPI0，SPI1(uart1的同步模式，开启后会占用串口1)，SPI2(同上，占用串口2)
-SPI使用DMA发送和接收，同时提供一个spi_printf函数来进行操作
-spi_printf函数拥有Hex_Mode(单字节模式)和Buff_Mode(缓冲区模式)
-SPI配置函数同时也支持默认值和参数乱序输入

2025年2月15日 18点23分
-更新i2c部分库函数
-完成了独立例程5（I2C部分，带有自由指令串组合操作）
-I2C库新增指令串功能，可以实现一句配置完一整串操作
-例如：set_i2c_cmd(I2c0, 1, S_Tx_Rack, 0xa0, Stop, Cmd_End);
-引入任务序号设置方式，i2c操作为非堵塞方式，执行完当前指令串后通过状态查询函数即可得知操作是否完成。
-使用低速率操作IIC也不会造成程序堵塞。

2025年2月14日 15点08分
-补充set_uart.h中有关Use_Timerx的说明
-定时器设置时新增us单位支持，使用"100us"这样的格式也可以了

2025年2月13日 10点58分
-I/O中断、定时器、传统外部中断INT部分增加设置中断函数功能

2025年2月8日 21点43分
-修复传统外部中断INT库函数中的部分错误

2025年2月8日 11点31分
-修正部分程序中的拼写错误
-修正使用说明部分的拼写错误

2025年2月7日 22点25分
-修复所有I/O均可独立中断部分库函数部分错误
-修正I/O部分库函数部分拼写错误
-修正使用说明部分拼写错误

2025年2月6日 15点29分
-更新库函数使用说明的INT部分和定时器部分
-增加详细丰富的例程，优化内容排版

2025年2月6日 12点17分
-更新定时器部分的函数定义和参数输入方式
-定时器部分库函数，新增支持乱序输入和默认值方式
-新增自适应单位，支持hz(赫兹)，ms(毫秒)，s(秒)后缀输入自动识别

2025年2月5日 12点27分
-更新库函数的主频获取部分，使其可以适应所有的HIRC频率
-修改逻辑为手动设置主频后就不再自动获取
-需要注意，主频自动获取仅能获取内部HIRC的频率，外部晶振做主时钟的时候无法获取

2025年1月26日 22点28分
-更新库函数使用说明的IO部分和普通 I/O 口均可中断部分
-新增丰富的使用例程部分，以及优化的表格内容
-修正部分错别字和拼写错误
-对set_io的设置io模式枚举值名称进行改动
-新增支持所有io特殊模式（如转换速度、驱动电流等）的开启和关闭操作

2025年1月22日 22点29分
-增加“教程-如何建立一个项目”，文档详细说明了如何从头建立工程使用库函数
-优化代码占用，改善了set_io和set_ioint的代码体积占用。
-新代码压缩率高达269%，独立例程1优化后编译仅占用code=2320（原占用code=6246）

2025年1月22日 12点38分
-增加自动获取主频功能，适配STC-ISP下载选择的频率
-（除了5.5296Mhz和11.0592Mhz无法自动识别外，其余均可自动识别并参与初始化计算）
-增加独立历程的使用说明，写明了例程的效果

2025年1月21日 12点18分
-增加拓展中断号工具，存放在库函数使用说明文件夹内。
-将更新日志切换为时间倒序，保证最新的更新在最开头。
-调整独立历程4的部分效果描述。
-删除了独立历程内的多余文件，只保留可编译的核心文件。

2025年1月20日 17点56分
-修复串口库函数在接收超出缓冲区数量数据时候的计数错误。
-现在接收大量数据后，会锁定在缓冲区的上限，后续的被自动丢弃，不再接收。

2025年1月20日 15点25分
-更新ADC部分库函数，完成独立例程4使用ADC部分(可设置连续或单次自动转换)。
-修正定时器和串口部分函数与变量的重名冲突问题。

2025年1月19日 21点59分
-更新INT独立中断、定时器部分、串口部分的库函数使用文档

2025年1月18日 19点23分
-完成独立例程3设置串口部分(包含串口DMA)的所有程序，并且测试完毕。
-串口部分使用DMA发送，空闲中断接收。使用串口独立缓冲区完成收发操作。
-使用例程中给出了使用scanf进行交互读取的部分示例。
-中断函数全都是被缓存和代理操作的，无需关心中断部分的处理。

2025年1月17日 12点01分
-串口新增uart_printf函数，可以拥有普通printf功能、hex单字节发送功能、buff缓冲区发送功能。
-普通字符串打印模式：uart_printf(Uart1, "num:%d\r\n",cnt);//可以像正常printf一样使用。
-hex数据单字节输出模式：uart_printf(Uart1, Hex_Mode, 0x12);//输出0x12一个字节的数据。
-buff缓冲区输出模式：uart_printf(Uart1, Buff_Mode, dat, 20);//输出20个字节的数据，从dat数组0地址开始。

2025年1月16日 19点48分
-串口基础配置新增8位无校验、9位奇校验、9位偶校验模式。
-新增模式中，默认值为8位无校验。

2025年1月14日 11点49分
-增加串口库函数基础设置部分，高级部分还未完成。
-串口部分支持新特性：乱序输入和参数默认值。
-例如set_uart_mode(Uart3, "9600bps", "32byte", Use_Timerx, Uart_End);
-意为设置串口3为9600bps，32byte停止中断，使用定时3（对应串口号的定时器）
-引脚切换未填入，为默认Uart3_P00_1，除了第一个参数，后面参数均支持乱序和默认值。

2025年1月12日 13点27分
-修改独立例程1部分错误导致编译不通过的问题，现已测试通过。

2025年1月11日 22点02分
-更新定时器部分的库函数
-完成独立例程"2设置定时器及外部中断部分(T0,T1,T2,T3,T4,T11)"。
-库函数增加高级配置模式，一行代码即可实现定时器自动配置。
-定时器库函数实现了T1/T12和TMxPS的自动使用，可以直接设定5s@40Mhz的定时器一次性中断。
-函数使用举例：set_timer_mode(freq_hz_mode, Timer0, 1.0f);

2025年1月10日 15点35分
-完成外部中断INT部分的库函数。
-添加独立例程"2设置定时器及外部中断部分(T0,T1,T2,T3,T4,T11)"的INT部分测试程序。

2025年1月10日 13点56分
-增加IO/IO口独立中断部分的PDF说明文档

2025年1月10日 12点56分
-更新IO口独立中断部分库函数，库函数支持变长参数传入，测试通过。
-IO口中断状态通过get_ioint_satae(Pin34)函数实现，直接传入对应的引脚即获得中断结果。
-完成“1设置IO部分(包含IO独立中断)”的独立例程编写。

2025年1月9日 12点31分
-更新IO设置部分库函数，库函数支持变长参数传入，测试通过。
-使用举例：set_io_mode(pp_mode,Pin22,Pin24,Pin27,Pin01,Pin_End);//设置P22,P24,P27,P01为推挽输出模式

2025年1月9日 12点22分
-创建库函数工程