Error[8]: Undefined offset: 310, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

1 前言

在这之前,串口收发配置只在单片机、VS环境C#上位机有实现过,本次项目需要,头一次使用CSDK调试开发。按照套路,本来以为很简单,一下子就可以实现了,但是现实却打了我的脸,折腾了几个小时。在调试完成之余,对自己学习过程过一个记录。

2 串口配置 2.1 初始化串口
BOOL Usart_cfg_init(E_AMOPENAT_UART_PORT port, E_AMOPENAT_UART_BAUD baud)
{
    T_AMOPENAT_UART_PARAM uartCfg = {0x0};
    unsigned char ret;
    memset(&uartCfg, 0, sizeof(T_AMOPENAT_UART_PARAM));
    uartCfg.baud = baud;  
    uartCfg.dataBits = 8;    
    uartCfg.stopBits = 1;  
    uartCfg.parity = OPENAT_UART_NO_PARITY;  
    uartCfg.flowControl = OPENAT_UART_FLOWCONTROL_NONE;  
    uartCfg.txDoneReport = TRUE; 
    uartCfg.uartMsgHande = NULL;      //如果需要串口中断接收数据,需要实现回调函数
    ret = iot_uart_open(port, &uartCfg);
    return ret;
}
2.2 串口发送接口
/**写uart
*@param		port:		UART 编号
*@param		buf:		写入数据地址
*@param		bufLen:		写入数据长度
*@return	UINT32:     实际读取长度
**/
UINT32 iot_uart_write(                                        
                        E_AMOPENAT_UART_PORT port,           
                        UINT8* buf,                         
                        UINT32 bufLen                     
                    )
{
    return OPENAT_write_uart(port, buf, bufLen);
}
2.3 自定义实现 printf
#include                         //uart redirect fputc
#include                         //copy function
#include                         //va_start /vsnprintf /va_end function

void sy_Debug_Printf(E_AMOPENAT_UART_PORT port, char *format, ...) //自定义实现printf
{
	unsigned char uart_buff[256];

	unsigned char *pStr = uart_buff;	
	unsigned char delay_max;
	unsigned char  tem;
	va_list ap;
	
	va_start(ap, format);	                					//初始化 ap 变量
	vsnprintf((char *)pStr, sizeof(uart_buff), format, ap);		//可变参数。用于向字符串中打印数据、数据格式用户自定义
	va_end(ap);													//允许使用了 va_start 宏的带有可变参数的函数返回
	
	while((*pStr) != ')'// 这部分针对不同 MCU 自己实现单字节发送
	{
	=
     tem ( unsignedchar )*;pStriot_uart_write
     (,port& ,tem1 );++
	 pStr;//address data add					                                            }
	}	
int
2.4 测试demo
appimg_enter (void* )paramUsart_cfg_init
{
    (,DEBG_UART_PORT115200);=   
    sy_test_task_handle iot_os_create_task (,sy_test_taskNULL ,4096 ,1 ,, OPENAT_OS_CREATE_DEFAULT"sy_test" );return
    0 ;}
void
appimg_exit (void)iot_debug_print
{
    ("[sy_test_task_handle]appimg_exit");}
static
 
 
void sy_test_task ()PVOID pParameter//测试任务 char
{
    [ write_buff]= "uart hello world 8888888888888888888888" ;;
    int32 write_lenwhile
   (1)={
 write_len iot_uart_write (,UART_PORT2( *UINT8),write_buffstrlen ()write_buff);iot_os_sleep
 (100);//这个是必须的 }
}
Usart_cfg_init


3特别说明

整个程序配置下来看着很简单是不是?对的,整个流程都跟简单。但是这里有一点需要特别注意,如果串口打开过了,就不能二次打开,否则就会引起串口打开失败而不工作。错误代码例子如下:

BOOL (,E_AMOPENAT_UART_PORT port) E_AMOPENAT_UART_BAUD baud=
{
    T_AMOPENAT_UART_PARAM uartCfg 0x0 {};unsigned
    char ; retmemset
    (&,uartCfg0 ,sizeof ()T_AMOPENAT_UART_PARAM);.
    uartCfg=baud ; baud.  
    uartCfg=dataBits 8 ;.    
    uartCfg=stopBits 1 ;.  
    uartCfg=parity ; OPENAT_UART_NO_PARITY.  
    uartCfg=flowControl ; OPENAT_UART_FLOWCONTROL_NONE.  
    uartCfg=txDoneReport ; TRUE. 
    uartCfg=uartMsgHande NULL ;//如果需要串口中断接收数据,需要实现回调函数      =
    ret iot_uart_open (,port& )uartCfg;=
    ret iot_uart_open (,port& )uartCfg;//多配置了一次  return
    ; ret}
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
合宙 CSDK串口调试记录 Cat.1_C_内存溢出

合宙 CSDK串口调试记录 Cat.1

合宙 CSDK串口调试记录 Cat.1,第1张

1 前言

在这之前,串口收发配置只在单片机、VS环境C#上位机有实现过,本次项目需要,头一次使用CSDK调试开发。按照套路,本来以为很简单,一下子就可以实现了,但是现实却打了我的脸,折腾了几个小时。在调试完成之余,对自己学习过程过一个记录。

2 串口配置 2.1 初始化串口
BOOL Usart_cfg_init(E_AMOPENAT_UART_PORT port, E_AMOPENAT_UART_BAUD baud)
{
    T_AMOPENAT_UART_PARAM uartCfg = {0x0};
    unsigned char ret;
    memset(&uartCfg, 0, sizeof(T_AMOPENAT_UART_PARAM));
    uartCfg.baud = baud;  
    uartCfg.dataBits = 8;    
    uartCfg.stopBits = 1;  
    uartCfg.parity = OPENAT_UART_NO_PARITY;  
    uartCfg.flowControl = OPENAT_UART_FLOWCONTROL_NONE;  
    uartCfg.txDoneReport = TRUE; 
    uartCfg.uartMsgHande = NULL;      //如果需要串口中断接收数据,需要实现回调函数
    ret = iot_uart_open(port, &uartCfg);
    return ret;
}
2.2 串口发送接口
/**写uart
*@param		port:		UART 编号
*@param		buf:		写入数据地址
*@param		bufLen:		写入数据长度
*@return	UINT32:     实际读取长度
**/
UINT32 iot_uart_write(                                        
                        E_AMOPENAT_UART_PORT port,           
                        UINT8* buf,                         
                        UINT32 bufLen                     
                    )
{
    return OPENAT_write_uart(port, buf, bufLen);
}
2.3 自定义实现 printf
#include                         //uart redirect fputc
#include                         //copy function
#include                         //va_start /vsnprintf /va_end function

void sy_Debug_Printf(E_AMOPENAT_UART_PORT port, char *format, ...) //自定义实现printf
{
	unsigned char uart_buff[256];

	unsigned char *pStr = uart_buff;	
	unsigned char delay_max;
	unsigned char  tem;
	va_list ap;
	
	va_start(ap, format);	                					//初始化 ap 变量
	vsnprintf((char *)pStr, sizeof(uart_buff), format, ap);		//可变参数。用于向字符串中打印数据、数据格式用户自定义
	va_end(ap);													//允许使用了 va_start 宏的带有可变参数的函数返回
	
	while((*pStr) != ')'// 这部分针对不同 MCU 自己实现单字节发送
	{
	=
     tem ( unsignedchar )*;pStriot_uart_write
     (,port& ,tem1 );++
	 pStr;//address data add					                                            }
	}	
int
2.4 测试demo
appimg_enter (void* )paramUsart_cfg_init
{
    (,DEBG_UART_PORT115200);=   
    sy_test_task_handle iot_os_create_task (,sy_test_taskNULL ,4096 ,1 ,, OPENAT_OS_CREATE_DEFAULT"sy_test" );return
    0 ;}
void
appimg_exit (void)iot_debug_print
{
    ("[sy_test_task_handle]appimg_exit");}
static
 
 
void sy_test_task ()PVOID pParameter//测试任务 char
{
    [ write_buff]= "uart hello world 8888888888888888888888" ;;
    int32 write_lenwhile
   (1)={
 write_len iot_uart_write (,UART_PORT2( *UINT8),write_buffstrlen ()write_buff);iot_os_sleep
 (100);//这个是必须的 }
}
Usart_cfg_init


3特别说明

整个程序配置下来看着很简单是不是?对的,整个流程都跟简单。但是这里有一点需要特别注意,如果串口打开过了,就不能二次打开,否则就会引起串口打开失败而不工作。错误代码例子如下:

BOOL (,E_AMOPENAT_UART_PORT port) E_AMOPENAT_UART_BAUD baud=
{
    T_AMOPENAT_UART_PARAM uartCfg 0x0 {};unsigned
    char ; retmemset
    (&,uartCfg0 ,sizeof ()T_AMOPENAT_UART_PARAM);.
    uartCfg=baud ; baud.  
    uartCfg=dataBits 8 ;.    
    uartCfg=stopBits 1 ;.  
    uartCfg=parity ; OPENAT_UART_NO_PARITY.  
    uartCfg=flowControl ; OPENAT_UART_FLOWCONTROL_NONE.  
    uartCfg=txDoneReport ; TRUE. 
    uartCfg=uartMsgHande NULL ;//如果需要串口中断接收数据,需要实现回调函数      =
    ret iot_uart_open (,port& )uartCfg;=
    ret iot_uart_open (,port& )uartCfg;//多配置了一次  return
    ; ret}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1499241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存