串口3的手写函数中断接受

void EnableUART3IRQ(void)
{
    HAL_NVIC_SetPriority(USART3_IRQn, 0, 1);
    HAL_NVIC_EnableIRQ(USART3_IRQn);
    
    __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE); 
}

/**********************************************************************
 * 函数名称: USART3_SendBytes
 * 功能描述: 通过UART3发出多个数据
 * 输入参数: buf-数据缓冲区
 * 输入参数: len-数据长度
 * 输出参数: 无
 * 返 回 值: 0-成功
 * -----------------------------------------------
 ***********************************************************************/
void USART3_SendBytes(char *buf, int len)
{
	int i;
	for (i = 0; i < len; i++)
	{
		while ((USART3->SR & (1<<7)) == 0);
		USART3->DR = buf[i];		
	}
}

/**********************************************************************
 * 函数名称: USART3_IRQHandler
 * 功能描述: UART3中断函数,把接收到的数据放入环形缓冲区
 * 输入参数: 无
 * 输出参数: 无
 * 返 回 值: 无
 * 修改日期       版本号     修改人	      修改内容
 ***********************************************************************/
void USART3_IRQHandler(void)
{
	
    unsigned char c = 0;
	
    if((USART3->SR &(1<<5)) != 0)
    {
        c = USART3->DR;
        ring_buffer_write(c, uart3_ringbuffer);
    }
    HAL_UART_IRQHandler(&huart3);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值