基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA

基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA(直接内存存取)

软件: 软件:STM32CUBEMX/System Workbench/MDK keil5

步骤:1. 在STM32cubemx中建立新的project,按照之前操作选择正确的MCU
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第1张图片

2. 首先设置RCC和SYS和TIME1选择内部时钟(Internal Clock)配置如下。
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第2张图片

3. 根据板子情况设置时钟树(此处外部晶振是12M,STM32f107最高主频为72M)。
4. 配置USART1为Asynchronous模式
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第3张图片

5. 可以发现PA9和PA10被设置为了USART1_TX, USART1_RX。

基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第4张图片

6.UART1配置用默认的115200 / 8/ none和1即可。
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第5张图片

7.配置DMA,点击Add,添加USART1_TX,Channel和Direction会自动选择,Data Width用默认的Byte。
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第6张图片

然后启用串口中断
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第7张图片

8.在Project—setting中Toolchain/IDE选择所需要的编译软件,keil5/SW4STM32,勾选下图选项。
基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA_第8张图片
保存之后,点击任务栏的代码生成图标。

9. 完成之后点击Open Project,自动打开项目,编辑main.c添加如下代码。

/* USER CODE BEGIN PV /
/Privatevariables ---------------------------------------------------------/
uint8_t serialMsg[] = "\r\n
*** Serial Output Message by DMA **\r\n UART DMA Test \r\n";
/
USER CODE END PV */

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

编译无错误即可。
本篇主要讲述如何通过DMA向串口输出数据。

使用System Workbench时
5. 在第8步时选择SW4STM32,之后继续相同操作。
6. 添加代码后,右键点击项目,选择Properties,Run—Debug Settings,然后点击右侧New Ac6 STM32 Debugging,完成后点击Run。
注:若上一步报错,原因即不能使用自动生成的cfg配置文件,需要自定义cfg配置文件并修改其中的source[find interface/stlink.cfg]为source [find interface/stlink-v2.cfg]即可。
所以需要右键点击 项目名Run.cfg ,给它改个名字,

然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Main-C/C++Application那里点击“Search Project”,然后选择出现的默认的elf文件:

然后在Debugger-User Defined-Browse 那里选择你自己改名的配置文件

然后右键点击那个新的cfg文件,选择"Open With - Text Editor", 进行如下更改:

source [find interface/stlink.cfg] 更改为 source [find interface/stlink-v2.cfg]

reset_config srst_only srst_nogate connect_assert_srst 这一行改为 reset_config none

然后再Run一下,就可以了。

测试结果
通过串口调试软件(此处使用Serial Port Utility调试软件 波特率设为115200)可以得到不断输出如下信息:

**** Serial Output Message by DMA ***
UART DMA Test
.
**** Serial Output Message by DMA ***
UART DMA Test

你可能感兴趣的:(stm32cubemx,代码生成,stm32f107)