0x01 STM32CubeMX以及Hal库的安装

forever_龙哥

前言

​ STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。

​ 在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间。

STM32CubeMX的环境安装

​ 由于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用。JRE可以在java官网上找到并安装,这里笔者就不再赘述了。

STM32CubeMX的安装

​ STM32CubeMX可以在官网下载,笔者也同时将安装文件上传到百度网盘之中,方便无法在官网下载的读者进行下载。链接: https://pan.baidu.com/s/1Zr-XSb5O8WbkVXJOlk6tLw 提取码: 2333

​ 解压缩STM32CubeMX-5.3.0.zip后双击SetupSTM32CubeMX-5.3.0.exe,一路next,同样的,安装路径中不要出现中文。

​ 打开STM32CubeMX后软件可能会报错,很有可能是Repository文件夹路径中包含中文。关闭报错后,点进上方Help-Updater Settings,在弹出的Updater Settings中找到Repository Folder这一项,把这个文件夹移动到没有中文的路径中,并更改Repository Folder这一项。在Connection Parameters的右下角找到Check Connection,联网后点击,直到红色的×变成绿色的√。如下图所示:mark

安装HAL库

什么是HAL固件库?

STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。

总之就是知道很nb就好了

这里有两种安装方式:离线安装和在线安装,笔者更倾向于离线安装的方法。离线包就在上方的百度网盘之中或者自行前往官网进行下载。

如图,进入Help-Manage***

mark

​ 在弹出的窗口中找到自己板子的型号,勾选上,点击左下角From Local

mark

​ 我手上的板子是STM32F4的板子,有一个问题,需要安装1.24.1版本的依赖包,然而这个包的安装需要1.24.0,但是安装完1.24.0后软件并不能识别1.24.0已经安装,所以对于1.24.1只能使用特殊的方法进行安装。

​ 还记得之前的Repository文件夹吗?

​ 将STM32Cube_FW_F4Patch_V1.24.1.zip解压缩到Repository文件夹,期间所有项目选择替换。

​ 至此,我们就完成了STM32CubeMX以及Hal库的安装。

CAN总线是一种高速、可靠的通信协议,可用于连接多个节点,例如汽车电子和工业控制系统。在STM32CubeMXHAL库中,使用CAN总线需要以下步骤: 1. 配置CAN硬件 在STM32CubeMX中,选择正确的芯片型号并打开CAN总线选项卡。在该选项卡中,您可以配置CAN的时钟、波特率和过滤器等参数。根据您的具体应用需求进行配置。 2. 初始化CAN总线 使用HAL库的CAN初始化函数`HAL_CAN_Init()`初始化CAN总线。该函数需要传入CAN_HandleTypeDef结构体,该结构体包含了CAN的基本参数。 ```c CAN_HandleTypeDef hcan; hcan.Instance = CANx; hcan.Init.Prescaler = 10; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_13TQ; hcan.Init.TimeSeg2 = CAN_BS2_2TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = ENABLE; hcan.Init.AutoWakeUp = DISABLE; hcan.Init.AutoRetransmission = ENABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { Error_Handler(); } ``` 3. 配置CAN过滤器 使用HAL库的CAN过滤器配置函数`HAL_CAN_ConfigFilter()`配置CAN过滤器,以确保只有特定的消息可以通过。该函数需要传入CAN_HandleTypeDef结构体和CAN_FilterTypeDef结构体,后者包括过滤器的掩码和ID等参数。 ```c CAN_FilterTypeDef sFilterConfig; sFilterConfig.FilterBank = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = 0x0000; sFilterConfig.FilterIdLow = 0x0000; sFilterConfig.FilterMaskIdHigh = 0x0000; sFilterConfig.FilterMaskIdLow = 0x0000; sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; sFilterConfig.FilterActivation = ENABLE; sFilterConfig.SlaveStartFilterBank = 14; if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK) { Error_Handler(); } ``` 4. 发送CAN消息 使用HAL库的CAN消息发送函数`HAL_CAN_AddTxMessage()`发送CAN消息。该函数需要传入CAN_HandleTypeDef结构体和CAN_TxHeaderTypeDef结构体,后者包括消息的ID和数据等参数。 ```c CAN_TxHeaderTypeDef TxHeader; uint8_t aData[8]; TxHeader.StdId = 0x123; TxHeader.ExtId = 0x00; TxHeader.IDE = CAN_ID_STD; TxHeader.RTR = CAN_RTR_DATA; TxHeader.DLC = 8; TxHeader.TransmitGlobalTime = DISABLE; aData[0] = 0x01; aData[1] = 0x02; aData[2] = 0x03; aData[3] = 0x04; aData[4] = 0x05; aData[5] = 0x06; aData[6] = 0x07; aData[7] = 0x08; if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, aData, &TxMailbox) != HAL_OK) { Error_Handler(); } ``` 5. 接收CAN消息 使用HAL库的CAN消息接收函数`HAL_CAN_GetRxMessage()`接收CAN消息。该函数需要传入CAN_HandleTypeDef结构体和CAN_RxHeaderTypeDef结构体,后者包括消息的ID和数据等参数。 ```c CAN_RxHeaderTypeDef RxHeader; uint8_t aData[8]; if (HAL_CAN_GetRxMessage(&hcan, CAN_RX_FIFO0, &RxHeader, aData) != HAL_OK) { Error_Handler(); } ``` 以上就是使用STM32CubeMXHAL库的CAN总线应用教程。根据您的应用需求,您可以进一步优化CAN总线的配置和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值