行业资讯
📅 2026/8/20 12:39:14
STM32--HAL库部分外设接口函数
GPIO控制器/*GPIO引脚初始化配置结构体*/ typedef struct { uint32_t Pin; /*要配置的GPIO引脚*/ uint32_tMode; /* GPIO引脚的工作模式*/ uint32_tPull; /* GPIO引脚是否使用上、下拉电阻*/ uint32_tSpeed; /* GPIO引脚电平反转速度*/ uint32_tAlternate; /*! GPIO引脚复用模式*/ } GPIO_InitTypeDef; /*GPIO引脚状态*/ typedef enum { GPIO_PIN_RESET 0, /*低电平状态*/ GPIO_PIN_SET /*高电平状态*/ }GPIO_PinState;初始化GPIO控制器voidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init)读取GPIO端口电平状态GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx, uint16_t GPIO_Pin写入GPIO端口电平状态voidHAL_GPIO_WritePin(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin, GPIO_PinState PinState)反转GPIO端口电平状态voidHAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx,uint16_t GPIO_PinUART控制器/*UART串口初始化配置结构体*/ typedef struct { uint32_t BaudRate; /*波特率*/ uint32_t WordLength; /*数据宽度*/ uint32_t StopBits; /*停止位宽度*/ uint32_t Parity; /*校验位模式*/ uint32_t Mode; /*是否启用接收或发送模式*/ uint32_t HwFlowCtl; /*是否启用硬件流控*/. } UART_InitTypeDef;初始化UART控制器HAL_StatusTypeDefHAL_UART_Init(UART_HandleTypeDef *huart)使用轮询方式发送数据HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,const uint8_t *pData, uint16_t Size, uint32_t Timeout)使用轮询方式接收数据HAL_StatusTypeDefHAL_UART_Receive(UART_HandleTypeDef*huart,uint8_t *pData, uint16_t Size, uint32_t Timeout)使用中断方式发送数据HAL_StatusTypeDefHAL_UART_Transmit_IT(UART_HandleTypeDef*huart,uint8_t *pData, uint16_t Size)使用中断方式接收数据HAL_StatusTypeDefHAL_UART_Receive_IT(UART_HandleTypeDef*huart,uint8_t *pData, uint16_t Size)使用DMA方式发送数据HAL_StatusTypeDefHAL_UART_Transmit_DMA(UART_HandleTypeDef*huart, const uint8_t *pData, uint16_t Size)使用DMA方式接收数据HAL_StatusTypeDefHAL_UART_Receive_DMA(UART_HandleTypeDef*huart,uint8_t *pData, uint16_t Size)huart:UART句柄 pData:要存放数据的首地址 Size:要接收的字节 Timeout:超时时间DMA控制器/*DMA控制器初始化配置结构体*/ typedef struct { uint32_t Channel; /*数据流的通道编号*/ uint32_t Direction; /*数据传输方向*/ uint32_t PeriphInc; /*外设地址递增模式*/ uint32_t MemInc; /*存储器地址递增模式*/ uint32_t PeriphDataAlignment; /*外设数据宽度*/ uint32_t MemDataAlignment; /*存储器数据宽度*/ uint32_t Mode; /* DMA传输模式*/ uint32_t Priority; /*数据流优先级*/ uint32_t FIFOMode; /*直接模式/FIFO模式*/ uint32_t FIFOThreshold; /* FIFO阈值级别*/ uint32_t MemBurst; /*存储器突发模式*/ uint32_t PeriphBurst; /*外设突发模式*/ }DMA_InitTypeDef;初始化DMA控制器HAL_StatusTypeDefHAL_DMA_Init(DMA_HandleTypeDef *hdma)开始DMA传输HAL_StatusTypeDefHAL_DMA_Start(DMA_HandleTypeDef*hdma, uint32_tSrcAddress, uint32_t DstAddress, uint32_t DataLength)中断方式开始DMA传输HAL_StatusTypeDefHAL_DMA_Start_IT(DMA_HandleTypeDef*hdma,uint32_t SrcAddress, uint32_t DstAddress, uint32_tDataLength)clock时钟树DMA数据传输直接存储器访问嵌入式系统中用于高效传输数据的机制三种模式控制器---开启数据流搬运---通道(单次一个数据流只能搬运一个通道数据)FIFO启用FIFO后每个数据流都有一个独立的4字16字节FIFO源地址中的数据不会之间由DMA搬运到目标地址中而是先将数据存入FIFO中当到达设置的阈值时DMA会从FIFO中将数据取出放入存储器。PWM Timer实现原理脉冲宽度调制依靠定时器TIM实现F103挂载在APB1总线定时器时钟上内部有计数器、自动重装载寄存器ARR、捕获比较寄存器CCR计数器模式向上计数小于CRR输出高电平大于CRR输出低电平向下计数大于CRR输出高电平小于CRR输出低电平中间对齐一般用于电机驱动0-ARR-0来回摆动向上向下PWMTIM时钟频率/((PSC1)*(ARR1))ADC采样原理将模拟信号转化为数字信号采样根据采样频率将模拟信号离散化量化将采样信号进行分级将每个级别都分别对应一个数字值并将其转化为这个数值编码根据参考电压将量化电压进行编码成为数字信号串口电平标准USB串口通信TTL电平标准通过芯片CH340E将TTL电平转化为USB信号USBD,USBD-TTL标准规定0~0.4V这个范围时为逻辑0在2.4V~5V这个范围时为逻辑1。由于电平保持区域小抗干扰能力小多用于短距离串口通信。RS232串口通讯通过芯片MAX232将TTL电平转换为RS232电平当1个大于2.4V的TTL电平经过MAX232后被转化为-3~-15V的RS232电平。(负逻辑)当1个小于0.8V的TTL电平经过MAX232后被转化为3V~15V的RS232电平。抗干扰能力加强一对一通信RS485标准MAX485芯片转换通过AB两条差分线进行传输依靠ab之间电压差传数据不靠对地电压用A线电压减去B线电压如果在26v的范围内则都属于逻辑1用A线电压减去B线电压如果在-2-6v的范围内则都属于逻辑0抗干扰很强一主多从可以挂多个设备CMOS标准芯片原生阈值和电源 VDD 成比例逻辑 1输入高VIH0.7VDD逻辑 0输入低VIH0.3VDD特点供电范围宽3‑18V不限于 5V噪声容限大抗干扰比 TTL 强输入阻抗极高几乎不取电流静态功耗极小Modbus协议一种基于串行通信的通信协议一帧modbus协议包含地址域、功能码、数据和差错校验四部分使用应答机制实现数据交互Modbus-RTU四类存储类型功能码数据大小用途线圈 (Coil)01 读 /05 写单个 /0F 写多个1 位bit0 或 1开关量输出控制 LED、继电器离散输入02 读1 位bit0 或 1读取外部按键、传感器开关只读上位机不能写保持寄存器03 读 /06 写单个 /10 写多个16位2字节读写存光照、参数输入寄存器04 读16 位 (2 字节)只读放 ADC 采集光敏电压上位机只能读不能改