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 */
}
相关推荐
ouliten4 分钟前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
孞㐑¥1 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
Gary Studio2 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice2 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
工程师老罗2 小时前
YOLOv1 核心知识点笔记
笔记·yolo
lingggggaaaa2 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
PP东2 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
学电子她就能回来吗3 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
半壶清水4 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
tq10864 小时前
先探索,后设计
笔记