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 */
}
相关推荐
一隅论数智2 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本2 天前
离散数学第六课
学习·离散数学
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光2 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊2 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her12 天前
并查集-听课笔记
笔记·算法·并查集
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio