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 */
}
相关推荐
wixzjsh39 分钟前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
ZhiMuZhiLing40 分钟前
拓客软件学习成本实测方法论:从注册到出第一批名单要多久
学习·流量运营·用户运营
程序员大雄学编程1 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
LuminousCPP3 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
指针常量3 小时前
【RL系列文章】难样本学习等
学习·大语言模型·rl·后训练
wuyk5554 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构
一条破秋裤5 小时前
STM32 学习笔记:PWM 驱动 LED 呼吸灯与舵机代码
笔记·stm32·学习
kyrie_sakura6 小时前
python学习笔记11 -- 进程和线程
笔记·python·学习
自小吃多6 小时前
PCB Editor软件差分对添加与设置笔记
笔记·嵌入式硬件
高亦真7 小时前
今天是学习嵌入式的第34天
linux·学习·算法