Part Number:CC3235MODSFOther Parts Discussed in Thread:SYSCONFIG
不大习惯TI Driver中的使用方法,现在需要编写自己的串口接收中断函数,以实现接收0x10 02开头,0x10 03结尾的数据包。
是否可以按下面方式:
1. 在Sysconfig中配置串口的引脚,再在.c文件中调用UART2_open()。显然,UART2_Params_init中的2个callback为NULL。
2. 使用Hwi_create(INT_XX, fxn),创建hwi对象和uart0或uart1的关联。目前还没有找到串口中断的具体名称INT_XX。
我也知道这种方法有些笨或底层,因为自己从stm32编程过来,对于UART_read()的使用还未明白。
其实,就是要实现,使用串口接收中断,实时处理接收帧。
补充:刚刚试验了一下,结果发现在 Hwi_create(INT_UARTA0, uart_rx, &hwi_uart0_params, NULL);是进入了死循环,原因应该是在UART2_open()中已注册了串口的中断函数。
请问,怎么处理一下?
3. 追问,dirverlib的帮忙文档在哪儿?目前的方法是读响应的.c和.h文件。
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
您好,请问您是想要基于特定的字节或者每个字节的中断然后来进行中断吗?
我们还是比较建议您使用TI的驱动程序,比driverlib更容易些。
您可以通过 SDK 安装中的 docs 文件夹找到 driverlib 文档:
<SDK_INSTALL_DIR>/docs/drivers/doxygen/html/index.html
TIREX上也有:https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_WIFI_node
,
zhiyong chen:
您说的对,之前使用的单片机,一般都是基于串口接收中断进行处理:接收中断包括:收到1个字节或收到字节个数达到RX FIFO的阈值,或RX FIFO有数据,但在规定的时间内没有新数据(接收超时中断)。
但学习TI Driver时,发现它必须UART_read(),而没有基于事件的callback,或有callback也不是接收所需要的。
我也想使用TI Driver(比如在GPIO和其中断中,就使用了TI Driver的GPIO.h),但UART2可能满足不了目前的需求。
你能提供进一步的参考吗?
,
zhiyong chen:
如果使用UART_read(),就必须有一个任务,一直去执行它。总之,没有中断函数的实时性好。
,
Cherry Zhou:
好的收到,帮您再反馈给工程师看下,有新的消息会尽快给到您。
,
Cherry Zhou:
您好,检查 UART stream中的特定值,然后创建中断, UART 外设是没有办法执行这几个操作的。
zhiyong chen 说:如果使用UART_read(),就必须有一个任务,一直去执行它。总之,没有中断函数的实时性好。
是的,对于blocking mode来说是这样的。但在callback mode下:UART_read() does not block task execution. Instead, a callback function specified by UART_Params::readCallback is called when the transfer is finished. The callback function can occur in the caller's context or in HWI or SWI context, depending on the device-specific implementation. An unfinished asynchronous read operation must always be canceled using UART_readCancel() before calling UART_close().
您可以再查看下callback模式的具体信息。填充缓冲区时使用确定的大小,一旦缓冲区填满就会执行回调函数。 然后您就可以读取整个缓冲区,也可以继续按照这种方式解析帧。 如果帧长度不同and/or 大于缓冲区大小,那还需要做一些其他工作,但整体来说,在回调函数中所有操作都能执行。
,
zhiyong chen:
有些明白。我慢慢尝试一下。