这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
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灯闪烁。 |