STM32F101xx/STM32F103xx CAN库函数详解

需积分: 32 46 下载量 31 浏览量 更新于2024-08-10 收藏 4.73MB PDF 举报
"CAN库函数-信而泰bigtao系列选型手册" 这篇文档主要介绍了STM32固件库中的CAN(Controller Area Network)库函数,这些函数用于操作和管理STM32微控制器上的CAN接口。CAN是一种常用于汽车电子和工业自动化领域的通信协议,因其高可靠性、错误检测能力和多主站能力而被广泛采用。 STM32F101xx和STM32F103xx系列微控制器的固件库提供了丰富的CAN接口函数,使得开发者能够方便地控制和配置CAN外设。以下是对CAN库函数的详细说明: 1. **CAN_DeInit**:这个函数用于重置CAN外设的所有寄存器到其默认值,通常在初始化阶段使用,以清除之前的配置并准备新的配置。 2. **CAN_Init**:根据用户提供的结构体`CAN_InitStruct`中的参数初始化CAN外设的寄存器。这些参数可能包括CAN的工作模式、位速率、同步跳宽等。 3. **CAN_FilterInit**:根据`CAN_FilterInitStruct`中的设置初始化CAN滤波器寄存器,用于过滤接收到的消息,只允许特定ID的消息通过。 4. **CAN_StructInit**:将`CAN_InitStruct`中的所有参数初始化为默认值,方便在配置结构体前复位。 5. **CAN_ITConfig**:启用或禁用指定的CAN中断,如错误中断、传输完成中断等,以便根据需要响应事件。 6. **CAN_Transmit**:开始发送一个CAN消息,将消息放入发送队列等待传输。 7. **CAN_TransmitStatus**:检查消息的传输状态,例如是否已发送、正在发送或发送失败。 8. **CAN_CancelTransmit**:取消当前正在进行的传输请求,如果需要立即停止发送。 9. **CAN_FIFORelease**:释放FIFO(First In First Out,先进先出)缓冲区,清理接收的消息。 10. **CAN_MessagePending**:返回FIFO中仍有待处理消息的数量。 11. **CAN_Receive**:接收一个CAN消息,将消息数据读入用户提供的缓冲区。 12. **CAN_Sleep**:将CAN模块置于低功耗模式,节省能源。 13. **CAN_WakeUp**:唤醒CAN模块,使其恢复到正常工作状态。 14. **CAN_GetFlagStatus**:检查指定的CAN标志位是否被设置,例如错误标志或中断标志。 15. **CAN_ClearFlag**:清除CAN的待处理标志位,用于处理完事件后清除状态。 16. **CAN_GetITStatus**:检测指定的CAN中断是否发生,用于中断服务程序。 17. **CAN_ClearITPendingBit**:清除CAN的中断待处理标志,结束中断事件。 这些函数遵循严格的ANSI-C标准,且符合MISRA-C2004编码规范,具有良好的可移植性和可读性。固件库还提供了实时错误检测,通过验证函数输入值来增强软件的健壮性。虽然这种实时检测有助于开发和调试,但为了优化最终应用的代码大小和执行速度,可以在生产阶段将其移除。 这个选型手册提供了STM32微控制器中CAN接口的详细操作指南,对于开发基于STM32的CAN通信应用非常有价值。开发者可以根据手册中的描述和示例,快速理解和使用这些函数来构建自己的CAN通信系统。