本帖最后由 6552918 于 2022-9-1 20:28 编辑
@安小芯 @21小跑堂 @21ic大掌柜 @21ic小管家
整体方案框图如下: 1 N32G430C8L7内一直了RT-Threadnano 3.1.5,用于各线程的调度和通信 2 使用USART1实现了RT-Thread nano的shell,用于内核状态和线程状态的查看和调试,USART1使用查询收发方式 3 使用USART2外接CH340模块实现USB转串口,用于调试信息打印(有些十六进制信息使用shell打印不方便,而且shell使用查询方式不够高效)。USART2使用DMA收发方式,实现不定长度数据的高效收发 4 使用USART3外接ZW800指纹模块,实现指纹录入和验证。UART3使用DMA收发方式,实现不定长度数据的高效收发 5 使用板载的按键+移植MultiButton按键驱动模块,实现多种按键状态,用于指纹模组不同模式的切换 6 使用TIM3的CH1输出PWM驱动WS2812B幻彩灯,实现多种状态的效果显示。WS2812B的驱动方式使用PWM+DMA方式,控制简单高效。
本demo使用了RT-Thread nano3.1.5作为系统,实现各线程的管理和调度 工程路径如下 工程目录如下 delay.c文件内实现的ms和us的高精度延时
UART_DMA.c问价内实现了USART1USART2 和 UART3的中断+DMA方式的双缓存收发,可以高效的实现中断发送和不定长度数据的DMA接收,可以方便的移植到其他串口上。 button.c内创建一个线程,借用multi_button软件包实现板载按键功能。 fingerprint_module.c创建2个线程,一个线程用于命令发送,一个线程用于数据接收,2个线程间使用信号量进行同步。实现了指纹模组的注册和验证过程。 WS281X.c内创建了一个线程,用于WS2812B的状态显示,使用PWM+DMA方式驱动,文件内实现了中断和查询两种方式,可以根据使用场景,灵活使用。
视频地址:https://www.bilibili.com/video/BV1id4y197tt/?vd_source=379505f5c723a533bd2f5f97bf385084 开源地址如下:https://gitee.com/guoxiangfeng/n32-g430-rt-thread-nano |