推荐阅读最新更新时间:2026-03-20 11:46
STM32F1XX系列 HAL库 CAN大量收发数据
大量收发数据时,会产生收发数据0-3分钟后不再收发数据的现象,此时是由于库函数内部将CAN总线状态改为忙碌。 可在While(1)中填写如下代码 if( HAL_BUSY == HAL_CAN_Receive_IT(hcanx, CAN_FIFO0))//开启中断接收 { /* Enable FIFO 0 overrun and message pending Interrupt */ __HAL_CAN_ENABLE_IT(&hcan1, CAN_IT_FOV0 | CAN_IT_FMP0); }
[单片机]
使用STM32F1xx_HAL库实现CAN通信的问题
硬件平台:处理器为STM32F103R8,板子为自设计电路板,数码管显示+CAN通信。 软件开发平台:Keil V5 操作系统:FreeRTOS 问题描述: 使用HAL硬件库实现CAN通信时,CAN中断无法进入,不能够使用中断方式进行数据的接收。CAN的发送是没有问题,寄存器也接收到了响应的数据,就是中断没有被触发。研究了一天没有搞定,现把问题放下,先改用轮训读取的方式实现。 主要的代码如下: 1、接收中断 /** * @brief This function handles CAN1 RX0 interrupt request. * @param None * @retval None */ void
[单片机]
基于CubeMX HAL库CAN的配置
首先说说使用时候的两个坑。 (1)要使能Swap PA9/10 – PA11/12,这个时候PA11和PA12引脚才能出现。 (2)我第一步用的是回环模式。 大致是这样的。 While { SendCanMessage(); } Can_interrupt { HAL_CAN_Receive_IT(hcan,CAN_FIFO0); } 却发现只能中断一次不能返回了。 原因,配置好CAN后状态为HAL_CAN_STATE_READY。 设置为接收,状态为HAL_CAN_STATE_BUSY_RX0。 接收到数据一般会在继续设置为接收。这样一直可以接收。
[单片机]
STM32 HAL库 模拟SPI驱动 ADS1118
首先是SPI相关的简介: https://www.bilibili.com/opus/515342298243272188 然后是用STM32CubeMx初始化模拟SPI的引脚: STM32CubeMx的GPIO输入输出的配置可以参考: https://www.bilibili.com/opus/484177792198506654 我所用到的四个输出口分别对应ADS1118上的三个SPI通信口。 SYNC:PA4 SCLK:PA5 DOUT:PA6 DIN:PA7 在具体的应用中可以自行修改头文件中的GPIO口以配合硬件完成工程。 ADS1
[单片机]
STM32 HAL库 模拟SPI驱动 DAC8560
网上关于DAC8560相关的模拟SPI驱动的资料少的可怜,甚至连DAC8560的中文资料都不多,更不要提用HAL库进行编程的了,这实在是一块冷门芯片,本文主要是介绍讲解STM32 HAL库使用模拟SPI驱动DAC8560。 首先是SPI相关的简介: SPI通信 高冠避役 · 800阅读 然后是用STM32CubeMx初始化模拟SPI的引脚: STM32CubeMx的GPIO输出的配置可以参考: STM32CubeMx GPIO口输出 高冠避役 · 960阅读 这里之所以是只用开三个GPIO输出来模拟SPI是因为它只用到了半双工通信。 我所用到的三个输出口分别对应8560上的三个SPI通信口。 SYNC:PA6 SCLK
[单片机]
嵌入式STM32开发方式的本质区别:寄存器、标准库与HAL库对比(嵌入式初级开发者必读)
作为嵌入式初级开发者,理解STM32的三种开发方式(寄存器、标准库、HAL库)的本质区别及其适用场景,是掌握STM32开发的关键。以下是专业且通俗的对比分析: 1. 寄存器开发(Register-Level) 本质 直接通过读写硬件寄存器控制外设,开发者需手动配置每一个寄存器的位字段,完全掌控底层硬件。 代码示例 // 配置GPIOA的Pin0为输出模式 RCC- APB2ENR |= 1 2; // 使能GPIOA时钟 GPIOA- CRL &= ~(0x0F 0); // 清除Pin0原有配置 GPIOA- CRL |= 0x03 0; // 推挽输出,50MHz速度 GPIOA- ODR |= 1
[单片机]
【STM32 HAL库】HAL库的简介及文件结构
文章内容偏向HAL库的移植,以个人观点及了解为主,若与事实不符,则以www.st.com、www.stmcu.org.cn等平台为准。 使用的软件:VSCode(1.36版,带C/C++ IntelliSense插件) 芯片:STM32H743ZIT6(Nucleo-H743平台) 所使用的库:STM32Cube_FW_H7_V1.3.0,下载地址(截至当前的最新版本为1.5.0版):https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-m
[单片机]
基于STM32 HAL库的平衡循迹小车技术详解:串级PID控制、MPU移植及电赛应用
1.硬件设计(仅限参考) 先是原理图如下 主要模块:灰度,电源,mpu(陀螺仪),oled,tb6612,含有编码器的电机 2.mpu模块的使用和移植 想要使平衡车保持平衡,mpu是最重要的模块,大家可以参考这个博主写的 http://t.csdnimg.cn/ITLI3 如果大家没有时间或者移植失败,也可以直接移植我代码之中的mpu模块: 链接: https://pan.baidu.com/s/1-9Vstj5v0Wgqkm1AFrCt_w?pwd=k8g8 提取码: k8g8 3.代码的主要逻辑 1.通过mpu获得pitch,roll,yaw的值来进行处理 2.获得编码器的数值3.通过处理之后的数据
[单片机]