杰理AC692X系列—UART串口通讯(10)

杰理AC692X系列—UART串口通讯(10)

PS:之前入门的时候太煎熬了,所以我写这些是为了给刚入门的看看,少走弯路,共同进步。(哪里有错!请喷我!我改!!)
1、重写初始化串口:
我是从原先的uart_debug_int(DEBUG_UART_RATE);把需要用到的拉了出来重写了个初始化函数,

/********************************************************************************/
//------------------------------自定义配置
/********************************************************************************/
#define DYD_UART_EN
// #define DYD_PRINTF_EN //只关闭printf打印,不影响串口通讯
#define DYD_UART_RATE        9600

在这里插入图片描述
我使用的是DMDP做的通讯口

void  user_uart_init(u32 baud_rate)
{
#if !EQ_UART_DEBUG
	uart_module_on();
	JL_IOMAP->CON1 |= BIT(3) | BIT(2);
    JL_USB->CON0 = (BIT(0));//USB_PHY_ON
    JL_USB->IO_CON0 = (BIT(11) | BIT(10) | BIT(9)); //USB_IO_MODE	//DMDIE	//DPDIE

    JL_USB->IO_CON0 |= BIT(0); //TX DP
    JL_USB->IO_CON0 |= BIT(3);//RX DM
    JL_USB->IO_CON0 &= ~BIT(2);//tx dp

    JL_USB->IO_CON0 &= ~BIT(5);//DM下拉
    JL_USB->IO_CON0 &= ~BIT(7);//DM上拉

	JL_UART1->BAUD = (UART_CLK / baud_rate) / 4 - 1;
	JL_UART1->CON0 = BIT(14) | BIT(13) | BIT(12) | BIT(10) | BIT(3) | BIT(0);
	uart_info[1].callback_fun = user_common_uart_isr; //接收到东西会跑这个中断函数
	IRQ_REQUEST(IRQ_UART1_IDX, uart1_isr_fun);
	irq_set_prio(IRQ_UART1_IDX, 3); //设置中断优先级为3,(最高为3)
#ifdef DYD_PRINTF_EN
	register_handle_printf_putchar(user_putchar); //注册printf打印
#endif
#endif	
}

2、重写发送函数:
原先的它用__DEBUG框起来的。我不想改它原来的(改成bug还得找,麻烦),于是买它!!换汤不换药。
在这里插入图片描述

//发送字符串
void user_uart_tx_str(char *str,u8 len)
{
	extern void delay_nms(u32 n);
	u8 tx_len,i;
	tx_len = len;
	i=0;
	while(tx_len)
	{
		user_uart_tx(*(str+i));
		i++;
		tx_len--;
	}
}

初始化和发送也搞好了,接下来就是接收了
3、接收中断函数:
没错接收中断函数这里,我也是重写的!回头去看初始化那有个

uart_info[1].callback_fun = user_common_uart_isr; //接收到东西会跑这个中断函数
void user_common_uart_isr(u8 uto_buf, void *p, u8 isr_flag)
{
	if(UART_ISR_TYPE_DATA_COME == isr_flag){//看字面意思就知道是接收到数据了
		if(uto_buf!=0x00&&uto_buf != ' ')/*问:为什么要加这句判断呢?*/
		{
		//在这里添加你的处理消息
		}
}

答:我记得是这样的。不加这句在平常用串口模拟的时候是没问题,但是一旦手机连接播放的时候,你就会接收到这两个东西,可能会造成接收出错,自己测下看看加不加就行,问题不大。
4、关了系统打印,又想看自己的打印:
按照我那样初始化后打开这个宏就行

// #define DYD_PRINTF_EN //只关闭printf打印,不影响串口通讯

END!!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值