Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
cubemx
RT-Thread Studio
rttstudio和cubemx
发布于 2022-04-12 14:20:42 浏览:513
订阅该版
在art-pi模板的基础上做项目开发,加上了can和eth,想更改fdcan1的引脚,本来不想用cubemx,但在工程里始终没有找到在哪里配置引脚,没办法用cubemx,生成代码后把CAN的初始化代码拷贝到了board.c中,编译通不过,显示一个宏定义没定义,那么找到定义的头文件incliude进去,编译->没用,直接把宏定义的值代替进去,更多的错误。 大家用studio顺利吗?或是我用了半个月还不熟悉?
查看更多
lchnu
2022-04-14
Witness, Understand, Skill
@888Tim 你好!不要打赏,点赞即可。 1.开启FDCAN  2.编译出现118个错误。因为HAL中没有使能FDCAN  3.在`board->CubeMX_Config->Core->Inc的stm32h7xx_hal_conf.h`文件中开启FDCAN模块  4.编译无误。但是实际上,这里只是表示程序驱动部分无误。实际硬件与FDCAN还没有做匹配。Cubemx生成的代码中,底层硬件部分,都是使用HAL_XX_MspInit函数处理的。 5.在`board->CubeMX_Config->Core->Src的stm32h7xx_hal_msp.c`文件中设置FDCAN1的硬件引脚。 ```c /** * @brief FDCAN MSP Initialization * This function configures the hardware resources used in this example * @param hfdcan: FDCAN handle pointer * @retval None */ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; if(hfdcan->Instance==FDCAN1) { /* USER CODE BEGIN FDCAN1_MspInit 0 */ /* USER CODE END FDCAN1_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_FDCAN; PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } /* Peripheral clock enable */ __HAL_RCC_FDCAN_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /**FDCAN1 GPIO Configuration PH14 ------> FDCAN1_RX PB9 ------> FDCAN1_TX */ GPIO_InitStruct.Pin = GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1; HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* USER CODE BEGIN FDCAN1_MspInit 1 */ /* USER CODE END FDCAN1_MspInit 1 */ } } /** * @brief FDCAN MSP De-Initialization * This function freeze the hardware resources used in this example * @param hfdcan: FDCAN handle pointer * @retval None */ void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* hfdcan) { if(hfdcan->Instance==FDCAN1) { /* USER CODE BEGIN FDCAN1_MspDeInit 0 */ /* USER CODE END FDCAN1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_FDCAN_CLK_DISABLE(); /**FDCAN1 GPIO Configuration PH14 ------> FDCAN1_RX PB9 ------> FDCAN1_TX */ HAL_GPIO_DeInit(GPIOH, GPIO_PIN_14); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_9); /* USER CODE BEGIN FDCAN1_MspDeInit 1 */ /* USER CODE END FDCAN1_MspDeInit 1 */ } } ```  5.屏蔽上述代码中第22行的Error_Handler即可。你也可以改成你希望的引脚。至于HAL_FDCAN_MspInit函数中,RCC部分是否有必要,建议你读一下drv_fdcan.c中的初始化部分,若重复了,则删除上述函数中的rcc即可。我没有用过,但是思路是没有问题的。 6.编译无误  7.进一步说明,在`board->CubeMX_Config->Core->Src的stm32h7xx_hal_msp.c`包含了ART-PI硬件上的各种外设的驱动。Studio挺好用的,关键是你要熟悉/习惯它对工程管理的逻辑。我是比较忌讳用cubemx联动、直接复制其他工程的conf.h等设置文件的操作。 给你展示的工程编译结果,就是在前天帮你配置ETH的ART-PI工程上处理的,我还没有删除,所以放心大胆使用。 若FDCAN数据收发不正常,你要确认引脚是否配置正确,硬件连接是否无误,时钟配置是否正确,CAN总线的速率是否设置正确。 8.补充说明 另外,认真读了本贴中你和其他坛友的对话,你对于Cube MX+Studio的理解是有问题的。 CubeMX作用就是按照图形化的各种引脚配置,生成硬件驱动程序,如各种MX_GPIO_Init、HAL_XXX_MspInit函数等,若配置正确,将相当于硬件已经正常驱动了。而我们写的应用程序,则调用诸如HAL_USART_Transmit之类的函数,实现相应功能。 RT-Thread作为OS,将硬件驱动部分,如drv_xx.c,基于HAL库再封装了一次,有些对用户透明的意思在里面。以本次的FDCAN驱动为例,drv_fdcan.c中会调用HAL_FDCAN_Init,而在HAL_FDCAN_Init中,会调用HAL_FDCAN_MspInit。HAL_FDCAN_MspInit的作用是底层硬件初始化,你需要配置引脚、时钟、中断等。 所以,无论是使用ENV,还是Studio,结合CubeMX的作用仅仅在于用到HAL_xxx_MspInit的部分。官方代码/CSP/BSP已经替用户考虑了很多,我们要做的就是硬件部分做好配置即可。 最后,你基于ART-PI做了基本的ETH,CAN,但是想在自己的电路板上运行,我建议依然在官方BSP上进行修改。 关闭`board->CubeMX_Config->Core->Src的stm32h7xx_hal_msp.c`中一些你没有用到的外设,按照你的实际电路进行配置,这样速度反而快。你现在对Studio还不熟悉,涉及到Sconscript等处理起来有些难度,若直接从0开始配置,时间成本太高了。 祝顺利!
3
个回答
默认排序
按发布时间排序
嚜軒公告
2022-04-12
努力中
建议先学习一下 studio的用法,rtt他用的是api,一般自己不涉及引脚
crystal266
2022-04-12
这家伙很懒,什么也没写!
提示的错误是什么?你是不是 没有使能相应的设备驱动 或者 在 board.h 中没有开启相应的宏定义
撰写答案
登录
注册新账号
关注者
0
被浏览
513
关于作者
Tim_PC
这家伙很懒,什么也没写!
提问
34
回答
10
被采纳
0
关注TA
发私信
相关问题
1
rt_thread studio 啥时候能用呢
2
RT_Thread使用反馈帖子
3
RTT studio 下的 AT指令问题。
4
什么时候RTT Sdudio支持Ubuntu,Deepin和UOS操作系统
5
rt thread Studio 关于J-LINK下载问题
6
RT-Thread studio 调试设置问题
7
RTT-Studio 如何设置调试配置参数?
8
rt_thread studio 软件包配置
9
RT-Studio目前只能开发STM32的项目吗?
10
rtt studio 生成hex名字修改
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
五分钟玩转RT-Thread新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
国产MCU移植系列教程汇总,欢迎查看!
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用 D1s (RDC2022 纪念版) 连接 thingspeak
2
RTduino 初体验
3
stm32wle5 双SRAM使用
4
开工大吉 | 借RT-Thread的论坛宝地,给各位嵌入式开发者送106块开发板!
5
随笔、FinSH原理浅析
热门标签
RT-Thread Studio
串口
LWIP
SPI
Env
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
stm32
RT-Thread Nano
SCons
MQTT
ESP8266
ota
packages_软件包
UART
rtthread
RTC
freemodbus
I2C
flash
cubemx
W5500
rt-smart
定时器
FAL
rtt
PWM
ADC
BSP
SDIO
msh
AB32VG1
Debug
C++_cpp
socket
SFUD
中断
编译报错
MicroPython
keil
LVGL
本月问答贡献
出出啊
1424
个答案
315
次被采纳
小小李sunny
1326
个答案
262
次被采纳
crystal266
486
个答案
144
次被采纳
whj467467222
1210
个答案
141
次被采纳
张世争
581
个答案
131
次被采纳
本月文章贡献
出出啊
4
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
crystal266
1
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
张世争
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部