极海半导体(APM)的APM32F035是一款面向电机驱动市场推出的高性能、高性价比的电机控制专用MCU(微控制器)。它支持单周期32位硬件乘法器,内置M0CP协处理器,并集成了高速ADC(模数转换器)、运放、比较器及CAN控制器等外设资源。
关于极海APM32F035的串口(Serial Port)通信功能,这通常是一个用于与外部设备进行数据交换的重要接口。串口通信是一种常用的通信方式,它允许设备之间进行数据的串行传输。然而,具体的串口配置、波特率(baud rate)、数据位(data bits)、停止位(stop bits)和校验位(parity)等参数可能会因应用需求而有所不同。
为了获取关于极海APM32F035串口通信的详细信息,包括其支持的串口类型(UART、SPI、I2C等)、通信协议、硬件连接方式和编程接口等,提供详细的硬件规格、编程指南和示例代码,更好地理解和使用APM32F035的串口通信功能。
下面开始串口测评。
串口连接端口:

了解硬件原理图:

极海半导体(APM)的APM32F035是一款面向电机驱动市场推出的高性能、高性价比的电机控制专用MCU(微控制器)。它支持单周期32位硬件乘法器,内置M0CP协处理器,并集成了高速ADC(模数转换器)、运放、比较器及CAN控制器等外设资源。
关于极海APM32F035的串口(Serial Port)通信功能,这通常是一个用于与外部设备进行数据交换的重要接口。串口通信是一种常用的通信方式,它允许设备之间进行数据的串行传输。然而,具体的串口配置、波特率(baud rate)、数据位(data bits)、停止位(stop bits)和校验位(parity)等参数可能会因应用需求而有所不同。
为了获取关于极海APM32F035串口通信的详细信息,包括其支持的串口类型(UART、SPI、I2C等)、通信协议、硬件连接方式和编程接口等,提供详细的硬件规格、编程指南和示例代码,更好地理解和使用APM32F035的串口通信功能。
下面开始串口测评。
了解硬件原理图:

MCU连接引脚:

串口使用的寄存器:

寄存器映射:


在数据手册中,关于串口模块(UART或其他类型)的详细章节,其中包含了寄存器的名称、地址、功能描述以及如何使用它们进行配置和控制的说明。这些寄存器可能包括:
配置寄存器:用于设置串口通信的基本参数,如波特率生成器、数据格式等。
控制寄存器:用于启动和停止串口通信,以及控制中断和其他高级功能。
状态寄存器:反映串口当前的状态,如发送/接收缓冲区状态、错误标志等。
数据寄存器:用于读取接收到的数据或写入要发送的数据。
代码:
typedef struct {
uint32_t baudRate; /*!< Specifies the baud rate */
//baudRate 成员是一个无符号32位整数,用于指定波特率。波特率是串行通信中每秒传输的符号数,它决定了数据传输的速度。
USART_WORD_LEN_T wordLength; /*!< Specifies the word length */
//wordLength 成员是一个枚举类型(或类型定义),用于指定数据位的长度。数据位是通信中每个字符或符号的实际内容。
USART_STOP_BITS_T stopBits; /*!< Specifies the stop bits */
//stopBits 成员是一个枚举类型,用于指定停止位的数量。停止位用于标记每个数据包的结束。
USART_PARITY_T parity; /*!< Specifies the parity */
//parity 成员是一个枚举类型,用于配置校验位。校验位用于在串行通信中检测数据错误,可以设置为无校验、奇校验或偶校验。
USART_MODE_T mode; /*!< Specifies the mode */
//mode 成员是一个枚举类型,用于设置USART的工作模式,比如是异步模式还是同步模式,是否启用接收或发送等。
USART_HARDWARE_FLOW_CTRL_T hardwareFlowCtrl;
//hardwareFlowCtrl 成员是一个枚举类型,用于配置硬件流控制。硬件流控制通常通过RTS(请求发送)和CTS(清除发送)信号来防止数据溢出接收缓冲区。 } USART_Config_T; //USART_Config_T 是这个结构体的类型名称,之后可以用这个类型来定义变量,存储USART的配置信息。// USART_Write 函数定义,它接收一个指向USART_T结构体的指针(用于指定USART模块)和一个指向uint8_t类型数据的指针(要发送的字符串) void USART_Write(USART_T* usart, uint8_t* dat) {
// 启用USART的发送完成中断(TXCIE,即Transmit Complete Interrupt Enable)
// 注意:这里使用的MINI_COM2可能是一个预定义的USART模块标识,而不是通用传入的usart指针
/* Enable USART_INT_TXCIE*/
USART_EnableInterrupt(MINI_COM2, USART_INT_TXCIE);
// 循环直到字符串的当前字符为NULL(字符串结束)
while (*dat)
{
// 循环等待直到USART的发送缓冲区为空(TXBE,即Transmit Buffer Empty)
// RESET通常表示一个标志位未被设置,即发送缓冲区不为空
while (USART_ReadStatusFlag(usart, USART_FLAG_TXBE) == RESET);
// 发送当前字符到USART,并递增指针到下一个字符
USART_TxData(usart, *dat++);
}
// 禁用USART的发送完成中断
// 同样,这里使用了MINI_COM2而不是传入的usart指针,这可能是一个错误或特定于代码上下文的实现
USART_DisableInterrupt(MINI_COM2, USART_INT_TXCIE);
}
输出代码: USART_Write(MINI_COM2, (uint8_t*)"xcc APM32F035 MOTOR EVAL\r\n");输出实际结果:

总结:
极海APM32F035是一款微控制器,丰富的外设接口,包括串口(USART)通信。下面是一些常见的串口问题点总结:
配置问题:
波特率设置不正确:发送方和接收方的波特率必须一致,否则通信会失败。
数据位、停止位、校验位不匹配:双方串口配置必须完全一致,包括数据位长度(通常为8位)、停止位数量(通常为1位)以及是否启用校验位。
我出现最多的是乱码,刚开始的时候乱码。
硬件连接问题:
串口线连接错误:TX(发送)和RX(接收)线需要正确连接,否则通信无法建立。
有两个跳帽没有接上。
我要赚赏金
