本帖最后由 6552918 于 2022-8-18 21:59 编辑
对于官方SDK例程的演示,其他小伙伴已经展示过了,但对源码没有过多描述,尽管蓝牙应用手册里有说明,但我觉得还不够详细,本篇帖子将对SDK中的MCU部分源码进行详细的说明,这样会对他入手这款芯片的小伙伴的使用更有帮助。 在使用SDK前要先安装这款芯片的支持包,这里就不再多做介绍了,可以去看看其他小伙伴的帖子 接着我们直接上干货,AT415WB_SDK内有两部分,如图所示: 蓝牙应用手册内有和这款芯片开发板相关的说明,需要大家在使用前仔细阅读一下,这样对如果会非常有帮助。 AT32_BLE_Application_Note_V2.0.4.zip内有两部分源码,部分是BLE的,另一部分是MCU的,因为WB415这款芯片使用的上海博通的BLE芯片和自己家的裁剪版F415合封而来的,通过如下框图能够清晰的看出来。 在芯片管脚布局上也能看出来 我们接下来看看SDK中MCU部分的源码。 system_clock_config(); 由于使用内部高速晶振,系统时钟只能配置到144M,无法配置到最高的150M.
at32_board_init();对板子的LED和按键进行了初始化, main函数内的at32_button_init(); 是重复的,可以删除 串口初始化如下: 主循环内的函数模块说明如下 串口2和串口3中断只开启了接收中断 串口2接收中断只负责将接收的数据放入缓存区,在AT模式下(UART_TP_MODE == 0),这些数据不做任何处理。在透传模式下(UART_TP_MODE == 1),数据在主循环内通过串口3发送到蓝牙端。 串口3的接收中断就相对复杂点,分为透传模式(UART_TP_MODE == 1)和AT模式(UART_TP_MODE == 0) 在AT模式下(UART_TP_MODE== 0),接收数据后判断\n为AT结束符,然后在主循环内进行AT命令解析。 at_cmd_handler();内处理的命令就行下面这两条 在透传模式下(UART_TP_MODE == 1),数据在主循环内通过串口3发送到蓝牙端。 在透传模式中判断switch_mode_flag的判断 因为蓝牙模块的模式切换是使用AT命令实现的,在切换命令过程中是不能执行透传的,所以用switch_mode_flag标志是否在命令切换过程中,具体实现如下 整个MCU部分的源码就讲解完了,希望对用这款芯片的小伙伴们有所帮助。 @21ic大掌柜 @21ic小管家 |