武广高铁
武广高铁
This guy hasn't written anything yet

注册于 1 year ago

回答
14
文章
0
关注者
0

把cubemx生成的汇编启动文件删掉,rt thread studio生成了汇编启动文件

不管是裸机开发还是系统开发,都不建议在中断里面调用延时函数或者while等待,中断的要求是快进快出,这样就可以保证实时性的要求,而你一次可以一次不行,说明实时性很差。
楼主使用了操作系统,操作系统里面就有非常多的中断,从而将您要想实现的逻辑被系统中断给随机打断。另外给您一个建议——接收数据最好用一个线程通过发送邮箱或者消息机制来进行,让另一个线程从邮箱接收数据或者接收消息。

attribute ((at()))是keil5的armcc编译器的写法,keil5的armclang这么写是不对的

从component.c文件的entry函数开始读,entry函数里面调用了rtthread_startup,rtthread_startup这个函数初始化各种内核机制的同时初始化系统时钟配置函数,初始化main线程(优先级为10,栈为2048)。所以main在rt-thread中是一个线程,而不是入口函数。
如果你用的是stm32,那么请从汇编语言的启动文件开始看,启动文件中先调用system_init函数,对cortex内核进行一番操作,然后就是bl __entry。也就是对应component.c文件中的entry。

在rt-thread里面,main函数其实是一个优先级为10的一个线程

cubemx的作用就只是把串口和时钟函数调用,配置其他的一切外设的初始化函数都被weak了

你把变量a定义为double类型看看,同时不要让a=0

这个是基于stm32f7芯片的工程,基于BSP的也是一样报错,所有的BSP使能信号机制后,再使能官方例程都有这个SIGUSR1未定义的问题(这个libc_signal.h头文件在rt-thread/include/libc目录中)

NANO-V3.1.3是极其简单的内核,类似于freertos和ucos那样的;
然后LTS-V3.1.4和4.02是完整版rt-thread,即内核加驱动;
LATEST是最新版的,建议使用最新版
可以看看官网资料

先把rt-thread studio生成的system_clock_config(int target_freq_mhz)函数里面的内容全部注释掉,然后用stm32cubemx生成的system_clock_config函数里面的内容复制到system_clock_config(int target_freq_mhz)下面就可以了。其他的不用改。

点击红圈圈里面的程序下载按钮旁边的下拉按钮,选择ST-LINK即可
OOO`I07[CUMUJCS_@`LT7@Q.png

回到
顶部

发布
问题

投诉
建议