AT32F403AVGT7学习笔记

一、串口发送

函数:usart_data_transmit

参数1:串口USARTx

参数2:发送缓冲区

示例代码如下:

cpp 复制代码
/*
函数功能:串口连续发送字节
   参数1:发送缓冲区	 可以char类型
	 参数2:缓冲区大小	 strlen计算
*/

char txbuff[64];	//发送缓冲区

void uasrt_buf_trans(uint8_t *buff,uint8_t data_size)
{
	uint32_t i;
	for(i= 0; i < data_size; i++)
	{
		usart_data_transmit(USART1,buff[i]);
		while(usart_flag_get(USART1,USART_TDC_FLAG) == RESET);
	}
}

官方提供的函数usart_data_transmit只能发送一位,用上面这个函数可以连续发送。

二、串口接收中断

ps:接收中断一定要在void wk_usart1_init(void)初始化函数里面添加使能中断,否则根本进不了中断。

usart_interrupt_enable(USART1,USART_RDBF_INT,TRUE);
usart_interrupt_enable(USART1,USART_IDLE_INT,TRUE);

中断接收代码如下

cpp 复制代码
uint8_t rx_buff[6];
uint8_t  rx_cnt;
uint8_t rx_flag ;
/**
  * @brief  this function handles USART1 handler.
  * @param  none
  * @retval none
  */
void USART1_IRQHandler(void)
{
  /* add user code begin USART1_IRQ 0 */
	uint32_t temp;
	if(usart_flag_get(USART1,USART_RDBF_FLAG) != RESET)		//接收中断响应
	{
		rx_buff[rx_cnt++] = USART1 -> dt;										//将dt寄存器的值读到缓冲器里
	}
	if(usart_flag_get(USART1,USART_IDLEF_FLAG) != RESET)	//USART总线空闲时
	{
		temp = USART1 -> sts;																//清空空闲中断标志位
		temp = USART1 -> dt;																//清空空闲中断标志位
		temp &= 0;
		rx_flag = 1;
	}
  /* add user code end USART1_IRQ 0 */

  /* add user code begin USART1_IRQ 1 */

  /* add user code end USART1_IRQ 1 */
}
相关推荐
茯苓gao1 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
dexi.Chi 攻城狮3 小时前
SQL层次查询语法
经验分享·笔记·sql
HERR_QQ4 小时前
强化学习的数学原理 学习笔记
人工智能·笔记·学习·自动驾驶
MartinYeung55 小时前
[论文学习]DP-Fusion:面向大语言模型的令牌级差分隐私推理-深度解析
人工智能·学习·语言模型
zwenqiyu6 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
MartinYeung57 小时前
[论文学习]SecureGate:通过令牌级门控学习何时安全地揭示PII-深度解析
学习·安全
大鱼>7 小时前
超参数调优进阶:Optuna/Bayesian/Early Stopping
人工智能·学习·机器学习·聚类
liuyicenysabel8 小时前
多服务上线日记二:
服务器·笔记·学习
小弥儿8 小时前
GitHub今日热榜 | 2026-07-05:阿里巴巴浏览器Agent上榜
学习·开源·github
‿hhh8 小时前
Dify核心模块详解:从文本生成到智能体
人工智能·学习·microsoft·agent·上下文·记忆