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 */
}
相关推荐
yyyyy_abc8 小时前
ceph学习笔记
笔记·ceph·学习
晓梦林8 小时前
ximai靶场学习笔记
android·笔记·学习
nashane8 小时前
HarmonyOS 6学习:外接键盘CapsLock与长截图功能的实战调试与完整解决方案
学习·华为·计算机外设·harmonyos
IT19959 小时前
Dify笔记-创建自定义工具连接到自建的OpenAPI Schema服务
笔记
一口吃俩胖子9 小时前
【脉宽调制DCDC功率变换学习笔记021】时域性能准则
笔记·学习
starvapour10 小时前
SSH笔记
笔记·ssh
@杰克成11 小时前
Java学习30
java·开发语言·学习
三品吉他手会点灯11 小时前
C语言学习笔记 - 40.数据类型 - scanf函数的编程规范与非法输入处理
c语言·开发语言·笔记·学习
大G的笔记本11 小时前
synchronized 的原理(简单版)
笔记
Bechamz12 小时前
大数据开发学习Day36
大数据·学习