您好,老师,对于在template基础上增加fdcan有些疑问想请教您。
看了几遍您上次的解答,好像明白了,不过在template上增加fdcan或者其他组件,总是有问题,当然也包括了csp。
1、先说在csp工程中增加fdcan,编译报错118个,最后我是在组件里面把CAN加上了,编译通过,最后拷贝官方CAN例程,利用loopback模式,调试通过。
2、要向您道个歉,之前说ETH ping通了,后来发现其实是编译通过后我有点激动,每次ping,都是timeout,我是激动的看错了以为ping通了,
3、按照您说的,创建template工程,然后硬件上增加fdcan,把CAN和fdcan都加上,各种宏也都加好了,stm32_hal_conf.h中打开了fdcan。但是在CubeMX_Config->Core->Src的stm32h7xx_hal_msp.c
中没有看到HAL_FDCAN_MspInit函数,后来利用cubemx配置好fdcan1引脚及时钟,有了该函数,编译800多错误,后来把组件CAN去掉,编译75个错误。
4、您说您比较忌讳用cubemx联动、直接复制其他工程的conf.h等设置文件的操作。您的意思是不算成在工程(csp/bsp)中使用cubemx吗?
5、有一次在template上增加好了fdCAN,把之前csp中的can通讯代码拷贝到template中,运行不起来,在csp中正常,断点调试发现是到rt_device_write语句时异常,两个工程的注册device和thread都基本一样,只是template的运行thread比csp多了一个mmcsd_de,
总之,用rtt studio让我感觉乱糟糟的了,本来是看好rtt内核简单,组件多,觉得开发应用起来应该很方便,结果到现在为止我弄了快1个月了,项目还是进行不下去,请老师抽空再指点我一下。
我感觉咋都把问题归于studio了,咱问题本身不是要写代码以完成目标吗?
最终所有问题都不得在代码层面解决嘛,工具只是辅助。
如果工具搞几下就全解决了,那不成了工具员,不是程序员🐵了
咱还是沉下心来,问题一个一个解决吧。
做嵌入式软件开发,除了代码本身,还要了解开发板,电路,外设总线等太多相关的知识。
需要的时候,万用表,示波器,逻辑分析仪,CAN分析仪什么的都要上阵,所以不要轻敌。
@888Tim 不要着急,一起来解决。
我有这么几个问题想问你一下,之前感觉你一直没有说清楚:
你的硬件开发环境是art-pi+工业核心板、或者你自制的硬件电路板,或者两者均有?若有自己的电路,能否针对你要用的eth,fdcan,uart(用于finsh输出),具体告知引脚对应关系?
你的诉求是否是希望在csp工程上进行?据我所知,art-pi上的h7内部flash不大,所以程序放在外部qspi flash中跑。
如果你的自制硬件与art-pi区别不大,我依然建议用bsp工程来改。
总之,先让rtt在你的板子上跑起来,再逐步调通各部件。
@aozima 您好,我不是归咎于studio,而且相比较与之前用过的开发环境,学习studio有点耗时间了,假如开发嵌入式用到的各个需要的文件都明确好,即使自己写代码也没问题,比如原来我是想用裸机写tcpip协议栈,后来因为觉得rtt studio应该开发方便,节省时间,所以采用它,可能是我领悟能力有点差,所以到现在一个月了也没有理清楚studio到底需要哪些文件,或者说哪些文件需要自己手动写,哪些是studio自动生成的。
也就是我想明确开发一个项目,哪些东东需要自己添加,哪些不用,而且实践中发现某些东东(非手动添加的)应该自然在那个地方,但实际上根本没有,而且debug经常是错误指定不明确,这些让我头疼。
因为我刚学习rtt,是应该好好安下心努力,可能是因为项目紧,觉得有压力😁
别想多了,主要是新东西有些多,别慌,好好消化。