这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 | |||
| icore3l_15 [2020/11/11 10:23] zgf | icore3l_15 [2020/11/11 10:26] (当前版本) zgf | ||
|---|---|---|---|
| 行 122: | 行 122: | ||
| { | { | ||
| if(dst_buffer[i] != src_buffer[i])  //测试失败 | if(dst_buffer[i] != src_buffer[i])  //测试失败 | ||
| - | { | + | { | 
| while(1) | while(1) | ||
| - | { | + | { | 
| HAL_Delay(500); | HAL_Delay(500); | ||
| LED_RED_ON; | LED_RED_ON; | ||
| HAL_Delay(500); | HAL_Delay(500); | ||
| LED_RED_OFF; | LED_RED_OFF; | ||
| - | } | + | } | 
| }  | }  | ||
| } | } | ||
| 行 188: | 行 188: | ||
| DMA_TypeDef; | DMA_TypeDef; | ||
| </code> | </code> | ||
| + | === 4.DMA句柄结构体DMA_HandleTypeDef === | ||
| + | HAL库在DMA_TypeDef的基础上封装了一个结构体DMA_HandleTypeDef,定义如下: | ||
| + | <code c> | ||
| + | typedef struct __DMA_HandleTypeDef  | ||
| + | { | ||
| + | void *Instance; /* 注册基地址 */ | ||
| + | DMA_InitTypeDef Init; /* DMA通讯参数 */ | ||
| + | HAL_LockTypeDef Lock; /* DMA锁定对象 */ | ||
| + | __IO HAL_DMA_StateTypeDef State; /* DMA传输状态 */ | ||
| + | void *Parent; /* 父对象状态 */ | ||
| + | void (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma);  | ||
| + | /* DMA传输完成回调 */ | ||
| + | void (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma);  | ||
| + | /* DMA半传输完成回调 */ | ||
| + | void (* XferM1CpltCallback)( struct __DMA_HandleTypeDef * hdma);  | ||
| + | /* DMA传输完成Memory1回调 */ | ||
| + | void (* XferM1HalfCpltCallback)( struct __DMA_HandleTypeDef * hdma);  | ||
| + | /* DMA传输半完成Memory1回调 */ | ||
| + | void (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma);  | ||
| + | /* DMA传输错误回调 */ | ||
| + | void (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma);  | ||
| + | /* DMA传输中止回调 */ | ||
| + | __IO uint32_t ErrorCode; /* DMA错误代码 */ | ||
| + | uint32_t StreamBaseAddress; /* DMA流基址 */ | ||
| + | uint32_t StreamIndex; /* DMA流索引 */ | ||
| + | DMAMUX_Channel_TypeDef *DMAmuxChannel; /* DMAMUX通道基地址 */ | ||
| + | DMAMUX_ChannelStatus_TypeDef *DMAmuxChannelStatus;  | ||
| + | /* DMAMUX通道状态基地址 */ | ||
| + | uint32_t DMAmuxChannelStatusMask; /* DMAMUX通道状态掩码 */ | ||
| + | DMAMUX_RequestGen_TypeDef *DMAmuxRequestGen; /* DMAMUX请求生成器基地址 */ | ||
| + | DMAMUX_RequestGenStatus_TypeDef *DMAmuxRequestGenStatus; | ||
| + | /* DMAMUX请求生成器状态地址 */ | ||
| + | uint32_t DMAmuxRequestGenStatusMask; /* DMAMUX请求生成器状态掩码 */ | ||
| + | }DMA_HandleTypeDef; | ||
| + | </code> | ||
| + | ==== 五、实验步骤 ==== | ||
| + | - 把仿真器与iCore3L的SWD调试口相连(直接相连或者通过转接器相连); | ||
| + | - 把iCore3L通过Micro USB线与计算机相连,为iCore3L供电; | ||
| + | - 打开Keil MDK 开发环境,并打开本实验工程; | ||
| + | - 烧写程序到iCore3L上; | ||
| + | - 也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。 | ||
| + | ==== 六、实验现象 ==== | ||
| + | 实验成功红色LED灯常亮,实验失败红色LED灯闪烁。 | ||