同步操作将从 周春雷/stm32_framework 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
_______ _______ __ __ _______ _______
| || || |_| || || |
| _____||_ _|| ||___ ||____ |
| |_____ | | | | ___| | ____| | 欢迎来到 stm32_framework
|_____ | | | | ||___ || ______| (本项目是“瞰百易”计划的一部分)
_____| | | | | ||_|| | ___| || |_____
|_______| |___| |_| |_||_______||_______|
_______ ______ _______ __ __ _______ _ _ _______ ______ ___ _
| || _ | | _ || |_| || || | _ | || || _ | | | | |
| ___|| | || | |_| || || ___|| || || || _ || | || | |_| |
| |___ | |_||_ | || || |___ | || | | || |_||_ | _|
| ___|| __ || || || ___|| || |_| || __ || |_
| | | | | || _ || ||_|| || |___ | _ || || | | || _ |
|___| |___| |_||__| |__||_| |_||_______||__| |__||_______||___| |_||___| |_|
一个志在实现STM32F1、F2和F4工程模板的项目,包含HAL库的高级封装、菜单库、有限状态机模板,集成了FreeRTOS、LWIP、FATFS、DSP、USB、IAP等等的组件,以及未来将加入的加密、BPNN、最小二乘、音频图片视频解码、LittlevGL等诸多常用的算法或组件,并具有良好的易用性、解耦性和可剪裁性!
那么就有小伙伴说了:“STM32这么简单,有啥玩的”,那么您玩出一个花儿来给我看看,Talk is cheap。
本项目的说明介绍等等部分遵循“二项玻”的第二则进行。
除了开源库之外的代码,每一行都经过手动移植、修改、检查和运行,是有灵魂的。
喜欢的话,点个小star鸭~
这段时间比较忙学业,日常想法都放在了 “模板要添加的内容.txt” 里面。
理解了原理的东西,通用性低的东西,就不用时间去走一遍前人走过的路了,就酱
不是目前主要完善的对象,已经完成的大部分外设驱动并且调好
不是目前主要完善的对象,已经粗糙的完成的大部分外设驱动,有很多bugs,暂时不要用
目前主要完善的对象,已经完成大部分外设驱动
(加粗体为暂时尚未实现的外设或者组件)
精简模板!可以把printf,sting和LCD等组件真真正的可以选择性不包含在工程中,先实现FLASH占用小于10KB
不会支持的外设:LTDC LCD \ IRDA \ CRYP \ HASH
暂时没有支持的组件:
线性回归算法库
常用校验、加密算法(3DES、AES、RC6、TEA、RSA、MD5、SHA1、SHA256)
Modbus协议
完善LCD支持屏幕种类和中文字库支持(原子和普中例子),FATFS从SD读取字库写入SPI FLASH
DCMI和IO驱动OV7725、OV2640和OV5650摄像头 (暂时无限延期)
音频编解码(MP3转PCM,外接一个功放直接播放) (暂时无限延期)
MQTT协议(包含cjson,LWIP应用) (暂时无限延期)
JPEG、GIF解码和BMP编解码 (暂时无限延期)
LittlevGL (暂时无限延期)
NN(CMSIS包中关于NN的内容,吸收进来) (暂时无限延期)
已经支持的外设:
大部分HAL库外设驱动的高级封装( MCO \ RTC \ CRC \ TIM \ ADC \ DAC \ IWDG \ USART \ SPI \ WFI \ FLASH \ IAP \ IO \ SDIO \ DCMI \ FSMC \ DMA \ RNG \ DSP \ FPU \ USB \ CAN \ Ethernet)
已经支持的组件:
FreeRTOS 10.3.1
LWIP 2.1.2(支持UDP、TCP Server和TCP Client 的RAW API)
HTTP协议(LWIP应用)
FATFS ff14
ARM CMSIS 5.7.0 DSP Lib
fsm 有限状态机
menu 菜单框架
内存管理(malloc和free)
软件模拟I2C\SPI库
PID库
工程添加下载到RAM执行的功能
IAP
(标为“缺省”的为暂未实现的,以后会加上- -,工作量好大的! )
sys.h和FreeRTOSConfig.h里面的宏定义SYSTEM_SUPPORT_OS:是否开启FreeRTOS,不开为裸跑;具体应用逻辑编写和任务配置分别在TaskConfig.c和BareConfig.c里面
FreeRTOS说明:所有API均罗列在TaskConfig.h里!关于FreeRTOS的信号量和事件标志组,均用任务通知替代!关于FreeRTOS的任务与任务、任务与中断间的通讯只用消息队列,功能最全!
Menu 菜单框架:SYSTEM_SUPPORT_Menu:提供一个作者自己实现的实现菜单功能的模板;推荐作为标准常用,应用逻辑围绕这个菜单框架展开编写;具体文件在sys_menu.c里面;按照里面的注释,void keyProcess(void)函数负责扫描输入,void menuProcess(void)函数负责执行菜单功能,这两个函数必须放到一个循环里一直执行
fsm 有限状态机:提供一个作者自己实现的有限状态机(fsm),用于管理逻辑较为复杂的程序,帮助更好的写阅读性强的状态图实现,详细说明和具体用法在fsm.c和fsm.h文件内(推荐:sys_menu 用于管理输入(按键等)、输出(屏幕等)和系统参数的用户控制,fsm 用于管理 用状态图 描述的多状态、多条件的复杂逻辑任务)
string、sprintf库:SYSTEM_SUPPORT_MyString:提供一个实现了string.h大部分字符操作函数的库;具体作用看MyString.c文件里的注释
string、sprintf库:SYSTEM_SUPPORT_sprintf:提供一个无依赖的独立实现的sprint库,github开源库from:mpaland/printf;经过修改,可以实现对指定串口发送printf格式化的字符串
PID算法库:SYSTEM_SUPPORT_pid:提供一个作者自己实现的pid算法实现库,集成了积分分离和变限积分,以及可选的不完全微分和微分先行,具体用法看pid.h里面
软件ringbuf,FIFO缓冲:由于应对大数据传输时,一个开源FIFO库
内存管理(malloc和free):提供一个自实现的内存分配和释放函数,可用于内部RAM和外部RAM,参考了正点原子的“内存管理”章节的源代码
LittlevGL:暂时缺省
LWIP 2.1.2:(一个人精力有限,目前只有F4的模板比较完善,请注意!)在lwipopt.h里面进行配置,支持UDP、TCP Server、TCP Client,HTTP Server,
详细使用说明请看“Docs.bin”里面的LWIP章节
FATFS ff14:SYSTEM_FATFS_ENABLE:已经支持SDIO SD卡,SPI SD卡,SPI FLASH和USB HOST MSC,详细使用说明请看“Docs.bin”里面的FATFS章节
USB (ST UM1021):详细使用说明请看“Docs.bin”里面的“STM32 USB库 使用”章节,里面介绍了USB Device的VCP、MSC和HID以及USB HOST的MSC和HID
IAP:详情计划请看“STM32F4DSP_HAL_IAP”文件夹内说明文档
(再次说明,具体使用方法看相应宏定义旁的注释,均在sys_config.h(F1)里或者PeriphConfigCore.h(F2和F4)里)
如果觉得好用,使用时还请别忘加上本仓库的地址哦:https://github.com/Staok/stm32_framework
Author : Staok
Email : superxhy@qq.com
Repo : https://github.com/Staok/stm32_framework
System is starting...
...
System init over!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。