STM32中断与DMA通信编程

实验要求:

学习stm32中断、DMA通信原理和编程方法。使用stm32tubemx和HAL库分别完成以下编程练习:

1. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。

2. 采用串口中断方式重做上周的串口通信作业。

3. STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。

所需工具:

所用工具:

1、芯片: STM32F103C8T6

2、STM32CubeMx软件

3、串口调试软件

4、STM32F1xx/STM32F4xxHAL库

具体实验步骤如下:
建立工程:

设置RCC:设置高速外部时钟HSE 选择外部时钟源

 1点击USATR1
2设置MODE为异步通信(Asynchronous)
3基础参数:波特率为115200 Bits/s。传输数据长度为8 Bit。奇偶检验无,停止位1 接收和发送都使能
4GPIO引脚自动设置 USART1_RX/USART_TX
5 NVIC Settings 一栏使能接收中断

 

 进行DMA设置

 时钟设置:

工程文件相关设置:

 

 

 打开工程:

添加代码:

如下:

 /* USER CODE BEGIN Init */
	uint8_t Senbuff[] = "\r\n**** Serial Output Message by DMA ***\r\n   UART DMA Test \r\n   hello world!";  
  /* USER CODE END Init */

 

while (1)
  {
    /* USER CODE END WHILE */
		HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
	        HAL_Delay(1000);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

没有错误之后,烧录,然后打开串口调试助手:

结果如下

 

参考博客:

【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)

stm32hal库串口DMA收发  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值