CH579的例程里面没有一个关于HAL_LED,HAL_KEY的例程.请问一下。是不是该HAL不支持TMOS,只建议用原生的GPIO控制

CH579的例程里面没有一个关于HAL_LED,HAL_KEY的例程.请问一下。是不是该HAL不支持TMOS,只建议用原生的GPIO控制

您好,LED和KEY只是GPIO的的控制,您只需要在tmos中创建一个事件去做对应的处理即可。


是不是该HAL不支持TMOS,只建议用原生的GPIO控制?

答:HAL是专门为适配TMOS。参考EVT中的LED.C和KEY.C

LED、KEY都是通过一个任务,去实现的。

之所以BLE工程内嵌TMOS,是因为BLE逻辑的复杂性,通过OS任务模式,可以实现更清晰逻辑化。

既然BLE中内嵌了TMOS,就是MCU被TMOS全权接管分配,所有的功能,都应该在TMOS机制下运行,即通过TMOS任务机制去实现,而非基于对MCU操作。

这样才能最大程度的保证BLE框架的稳定性。


就不能多一点案例吗?


@TECH42 为什么蓝牙串口例程ch57x_ble_uart中的串口打印也放在了和TMOS一样的main函数主循环中,不会影响实时性吗

image.png


 app_uart_process();这个函数并不是串口打印啊,他的操作是在查询一个标志位,串口在中断中接受后会置标志,查到标志后就调用蓝牙将串口收到的数据通过蓝牙发送给主机。


app_uart_process函数调用了app_drv_fifo_read_to_same_addr函数,往R8_UART3_THR寄存器循环写入数据,串口1发送字符串函数UART1_SendString也调用了R8_UART1_THR寄存器,不就是打印数据吗


那也要看什么时候会往R8_UART3_THR面写,不是每个循环都会往里面写,默认情况就是发送fifo里面没有数据,是没有往里面写数据去发送的。


明白,确定这个操作是写串口数据寄存器就行,以为main循环只能跑TMOS


@TECH_Hy 那SPI方式刷屏的handle可以放在主循环吗?需要保证最多多久的执行时间?


不建议放在主循环里去调用,最好是放在tmos任务里调用,如果事件较长还需要加大连接间隔,不然会导致蓝牙断开连接。


TMOS任务回调一般不超过多久的运行时间,1MS呢?


这个是没有明确的时间的,一般建议不要超过一半的连接间隔。


连接间隔是在哪定义的,暂时没找到


参考一下:

BLE广播间隔和连接间隔(CH573) - SweetTea_lllpc - 博客园 (cnblogs.com)

1.png



只有登录才能回复,可以选择微信账号登录