STM32 HAL库函数USART、DMA和几个嘎达马西的说明

[单片机]STM32 HAL库函数USART、DMA和几个嘎达马西的说明

STM32f103

SPI1_NSS/USART2_CK是同一个管脚
usart2同步通讯时和SPI1的NSS冲突


PWM
TIM_OCMode_Timing是在比较成功后不在对应输出管脚上产生输出。
TIM_OCMode_Toggle是在比较成功后翻转对应输出管脚上的电平。


TIM_OCMode_Active 输出比较主动模式 (匹配时设置输出引脚为有效电平,当计数值为比较/捕获寄存器值相同时,强制输出为高电平
TIM_OCMode_Inactive 输出比较非主动模式 (匹配时设置输出引脚为无效电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平)


DMA 
/**
DMA 开始传输
参数 1:DMA通道
	2:	源地址
	3: 目的地址
	4数据长度
**/
HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
/**
DMA 开始中断传输
参数 1:DMA通道
	2:	源地址
	3: 目的地址
	4数据长度
**/
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);

/**
终止DAM传输
参数1: DMA 通道
**/
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);
/**
终止DAM中断传输
参数1: DMA 通道
**/
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma);



/**
  * @brief Register callbacks 注册DMA回调函数
  * @param hdma: 				DMA通道
				
  * @param CallbackID: 回调函数参数
  * @param pCallback: 私有回调函数 ,指向DMA_HandleTypeDef 结构体.
  * @retval HAL status
  */                          
HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)( DMA_HandleTypeDef * _hdma))

/**
  * @brief UnRegister callbacks  注销DMA回调函数
  * @param hdma: DMA 通道
  * @param CallbackID: 回调函数的参数.
  * @retval HAL status
  */              
HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID)

/**
  * @brief  DMA轮询传输完成
  * @param  hdma:    DMA通道
  * @param  CompleteLevel: 完成程度
  * @param  Timeout:       最大超时
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t Timeout)

//---------------------------------------------------------------------------------------------------------------------
UART 

__HAL_DMA_GET_COUNTER(__HANDLE__) //返回当前DMA中,传输的剩余数据;

/** @brief  检测Uart标志 
  * @param usart或者uart句柄
  * @param  __FLAG__ specifies the flag to check.
  *        This parameter can be one of the following values:
  *            @arg UART_FLAG_CTS:  CTS Change flag (not available for UART4 and UART5)
  *            @arg UART_FLAG_LBD:  LIN Break detection flag
  *            @arg UART_FLAG_TXE:  Transmit data register empty flag 传输数据寄存器为空标志
  *            @arg UART_FLAG_TC:   Transmission Complete flag			传输完成标志
  *            @arg UART_FLAG_RXNE: Receive data register not empty flag 接收数据寄存器不为空标志
  *            @arg UART_FLAG_IDLE: Idle Line detection flag	//空闲标志
  *            @arg UART_FLAG_ORE:  Overrun Error flag			//溢出错误
  *            @arg UART_FLAG_NE:   Noise Error flag
  *            @arg UART_FLAG_FE:   Framing Error flag	//帧错误标志位
  *            @arg UART_FLAG_PE:   Parity Error flag	//奇偶错误标记 
  * @retval The new state of __FLAG__ (TRUE or FALSE).
  */
  //串口标志
#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))


/** @brief  
  清除空闲中断请求标志
  */
#define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__)

/*
uart发送
参数1: uart句柄
	2: 发送数据的地址
	3:发送的字节数
	4:超时
*/
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

/*
uart接收
参数1: uart句柄
	2: 接收数据的地址
	3:接收的字节数
	4:超时
*/
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

/*
uart中断发送
参数1: uart句柄
	2: 中断发送数据的地址
	3:中断发送的字节数
*/
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

/*
uart中断接收
参数1: uart句柄
	2: 中断接收数据的地址
	3:中断接收的字节数
*/
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

/*
uart DMA发送
参数1: uart句柄
	2: DMA发送数据的地址
	3:DMA发送的字节数
*/
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

/*
uart DMA接收
参数1: uart句柄
	2: DMA接收数据的地址
	3:DMA接收的字节数
*/
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

/**
  * @brief 暂停DMA传输。
  * @param  huart uart句柄
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)

/**
  * @brief 恢复DMA传输。
  * @param  huart  uart句柄
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)

/**
  * @brief 停止DMA传输。
  * @param  huart  uart句柄
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)

/* 传输终止功能 */
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)		//终止传输
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart);//终止发送
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart);//终止接收
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart);		//终止中断传输
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart);//终止中断发送
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart);	//终止中断接收

/**中断回调函数**/
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);	//处理UART中断请求。
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);	//发送完成回调。
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);//发送一半回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);	//接收完成回调。
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);//接收一半回调函数
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);		//uart错误回调
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart);	//UART中止完成回调。
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart);//UART中止发送完成回调。
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart);//UART中止接收完成回调。


/** @brief  Checks whether the specified UART flag is set or not.
  * @param  __HANDLE__ specifies the UART Handle.
  *         UART Handle selects the USARTx or UARTy peripheral
  *         (USART,UART availability and x,y values depending on device).
  * @param  __FLAG__ specifies the flag to check.
  *        This parameter can be one of the following values:
  *            @arg UART_FLAG_CTS:  CTS Change flag (not available for UART4 and UART5)
  *            @arg UART_FLAG_LBD:  LIN Break detection flag
  *            @arg UART_FLAG_TXE:  Transmit data register empty flag
  *            @arg UART_FLAG_TC:   Transmission Complete flag
  *            @arg UART_FLAG_RXNE: Receive data register not empty flag
  *            @arg UART_FLAG_IDLE: Idle Line detection flag
  *            @arg UART_FLAG_ORE:  Overrun Error flag
  *            @arg UART_FLAG_NE:   Noise Error flag
  *            @arg UART_FLAG_FE:   Framing Error flag
  *            @arg UART_FLAG_PE:   Parity Error flag
  * @retval The new state of __FLAG__ (TRUE or FALSE).
  */
#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))



//----------------------------------------------------------------------------------------------------------------------
ADC

//检查指定的ADC中断源是否启用或禁用。
#define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) 


/** @brief 获取所选ADC的标志状态
  * @param __HANDLE__: ADC handle
  * @param __FLAG__: ADC flag
  *          This parameter can be any combination of the following values:
  *            @arg ADC_FLAG_STRT: ADC常规组开始标志
  *            @arg ADC_FLAG_JSTRT: ADC注入组启动标志
  *            @arg ADC_FLAG_EOC: ADC端常规转换标志
  *            @arg ADC_FLAG_JEOC: ADC结束的注入转换标志
  *            @arg ADC_FLAG_AWD: ADC模拟看门狗标志
  * @retval None
  */
#define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) 

/** @brief 清除ADC的挂起标志
  * @param __HANDLE__: ADC handle
  * @param __FLAG__: ADC flag
  *          This parameter can be any combination of the following values:
  *            @arg ADC_FLAG_STRT: ADC常规组开始标志
  *            @arg ADC_FLAG_JSTRT: ADC注入组启动标志
  *            @arg ADC_FLAG_EOC: ADC端常规转换标志
  *            @arg ADC_FLAG_JEOC: ADC结束的注入转换标志
  *            @arg ADC_FLAG_AWD: ADC模拟看门狗标志
  * @retval None
  */
#define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) 

/**
  * @brief 测试常规组转换触发器是否为软件启动 或外部触发.
  * @param __HANDLE__: ADC handle
  * @retval SET (software start) or RESET (external trigger)
  */
#define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) 

/**
  * @brief 清除ADC错误代码(设置为错误代码:“无错误”)
  * @param __HANDLE__: ADC handle
  * @retval None
  */
#define ADC_CLEAR_ERRORCODE(__HANDLE__)                                        \
  ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)

...
/**
  * @brief 启用ADC连续转换模式。
  * @param _CONTINUOUS_MODE_: Continuous mode.
  * @retval None
  */
#define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_)


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值