这是本文档旧的修订版!
银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
技术论坛 | http://www.eeschool.org | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V0.1 | 2020-11-11 | gingko | 初次建立 |
1.在主界面选择File–>New Project或者直接点击ACCEE TO MCU SELECTOR新建项目
2.出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置在搜索栏的下面,提供的各 种查找方式,可以选择芯片内核,型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F429IGHx
3.使用外部时钟源
4.调试设置选择Serial Wire,时基源选择SysTick
5.分别将LEDG,LEDR,LEDB对应的引脚PI3,PI4,PH14设置为GPIO_Output
6.引脚模式配置
7.DMA配置
8.打开DMA2的中断
9.时钟源设置,选择外部高速时钟源,配置为最大主频
10.工程文件的设置, 这里就是工程的各种配置我们只用到有限几个,其他的默认即IDE我们使用的是 MDK V5.27
11.点击Code Generator,进行进一步配置
* Copy all used libraries into the project folder
* Copy only the necessary library files
* Add necessary library files as reference in the toolchain project configuration file
每个DMA传输包含三项操作:
//定义src_buffer数组作为DMA传输数据源 //const关键字将src_buffer数组变量定义为常量类型 //表示数据存储在内部的FLASH中 const unsigned long int src_buffer[BUFFER_SIZE] = { 0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10, 0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20, 0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30, 0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40, 0x41424344,0x45464748,0x494A4B4C,0x4D4E4F50, 0x51525354,0x55565758,0x595A5B5C,0x5D5E5F60, 0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70, 0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80}; //定义DMA传输目标存储器 //存储在内部的SRAM中 unsigned long int dst_buffer[BUFFER_SIZE] = {0}; int main(void) { int i; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_DMA_Init(); HAL_DMA_Start(&hdma_memtomem_dma2_stream0,(unsigned long int)src_buffer,(unsigned long int)dst_buffer, (unsigned long int)BUFFER_SIZE); while(__HAL_DMA_GET_FLAG(&hdma_memtomem_dma2_stream0,DMA_FLAG_TCIF0_4) == SET); for(i = 0;i < BUFFER_SIZE;i++) { if(dst_buffer[i] != src_buffer[i]) //测试失败 { while(1) { HAL_Delay(500); LED_RED_ON; HAL_Delay(500); LED_RED_OFF; } } } LED_RED_ON; //测试成功 While(1) { } }