做俄语网站建设,云主机建网站教程,在什么网站上做外贸,工商管理系统官网概述#xff1a;HAL库为各种外设基本都配了三套 API#xff0c;查询#xff0c;中断和 DMA。 一、HAL库为外设初始化提供了一套框架#xff0c;这里以串口为例进行说明#xff0c;调用函数 HAL_UART_Init初始化串口#xff0c;此函数就会调用 HAL_UART_MspInit#xff0…概述HAL库为各种外设基本都配了三套 API查询中断和 DMA。 一、HAL库为外设初始化提供了一套框架这里以串口为例进行说明调用函数 HAL_UART_Init初始化串口此函数就会调用 HAL_UART_MspInit这个函数是弱定义的在 stm32f4xx_hal_uart.c文件里面如果要初始化直接将此函数在其它源文件里面实现即可如果用到了中断和 DMA也是直接在这里填写。 由于所有串口都是通过函数 HAL_UART_Init做初始化所以函数 HAL_UART_MspInit也是共用的。因此需要大家在这个里面区分是配置的哪个串口。 二、HAL库对中断的处理
1、那么问题来了如果要实现功能用户的应用程序怎么写入中断用户可以直接在函数 HAL_UART_IRQHandler的前面或者后面添加新代码也可以直接在 HAL_UART_IRQHandler调用的各种回调函数里面执行这些回调都是弱定义的方便用户直接在其它文件里面重定义
三、HAL库的DMA处理思路 1、为了方便各种外设直接启动 DMAHAL库专门为支持 DMA操作的外设都提供了对应的 DMA函数比如串口的
2、这里特别注意一点针对外设的 DMA函数基本都有开启中断如果用户使能此外设的 NVIC使用中务必别忘了写 DMA的中断服务程序比如使用 DMA1_Stream1
3、如果要在 DMA传输完成半传输完成等中断里面执行功能也是通过 HAL_DMA_IRQHandler调用的各种回调函数里面实现这些回调都是弱定义的方便用户直接在其它文件里面重定义