基于STM32cubemx的STM32F107vct6的代码生成,实验四串口与DMA(直接内存存取)
软件: 软件:STM32CUBEMX/System Workbench/MDK keil5
步骤:1. 在STM32cubemx中建立新的project,按照之前操作选择正确的MCU
2. 首先设置RCC和SYS和TIME1选择内部时钟(Internal Clock)配置如下。
3. 根据板子情况设置时钟树(此处外部晶振是12M,STM32f107最高主频为72M)。
4. 配置USART1为Asynchronous模式
5. 可以发现PA9和PA10被设置为了USART1_TX, USART1_RX。
6.UART1配置用默认的115200 / 8/ none和1即可。
7.配置DMA,点击Add,添加USART1_TX,Channel和Direction会自动选择,Data Width用默认的Byte。
8.在Project—setting中Toolchain/IDE选择所需要的编译软件,keil5/SW4STM32,勾选下图选项。
保存之后,点击任务栏的代码生成图标。
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