欢迎来到皮皮网官网

【量能饱和sat 源码】【mokee源码多大】【redis get源码】mdk源码

时间:2024-11-25 00:49:37 来源:scratch源码重编译

1.如何使用MDK建立一个STM32工程
2.如何使用MDK5.0建立STM32F103工程
3.ThreadX系列 | 最新v6.1.6版本在MDK中的移植方法
4.MDK编译出现“Target not created ”是什
5.问一下路过的大神keil5与keil5mdk 的区别是什么?

mdk源码

如何使用MDK建立一个STM32工程

       ç¬¬ä¸€æ­¥ï¼šèŽ·å–ST库源码

       å…³äºŽèŽ·å–ST公司的STM固件库源码,有几种方法。我们可以在百度上搜,网上有进行了分享,也可以到ST公司的官网进行查找并下载。不过,如果英文不好的话,要在官网上找到STM固件库确实是件很吃力的事。在官网上可以根据英文提示按不同条件进行筛选,具体操作如下图所示:

       END

       ç¬¬äºŒæ­¥ï¼šæ–°å»ºå·¥ç¨‹æ–‡ä»¶å¤¹â€”—《STM工程模板》

       é¦–先,新建工程文件夹《STM工程模板》,然后再在该文件夹下新建6个文件夹,分别为:《Doc》、《Libraries》、《Listing》、《Output》、《Project》和《User》。其中,《Doc》用于存放各种说明文档;《Libraries》用于存放各种库文件;《Listing》用于存放编译时产生的中间文件;《Output》用于存放生成的下载所需的文件;《Project》用于存放工程文件;《User》用于存放用户文件,即我们自己编写的各种源文件。具体情况如下图所示:

       END

       ç¬¬ä¸‰æ­¥ï¼šå‘建立的工程文件夹中添加库文件

       å°†åº“文件中的inc和src文件夹复制到模板工程文件夹下的FWLIB文件夹。具体操作情况如下图:

       å°†åº“文件中CoreSupport文件夹下的文件复制到工程模板文件夹下的CMSIS文件夹。具体操作情况如下图:

       å°†åº“文件中DeviceSupport文件夹下的相关文件复制到工程模板文件夹下的CMSIS文件夹。具体操作情况如下图:

       å°†åº“文件中startup文件夹下arm中的文件全部复制到工程模板文件夹下的startup文件夹。具体操作情况如下图:

       å°†åº“文件中Project文件夹下的相关文件复制到工程模板文件夹下的User文件夹中。具体操作情况如下图:

       END

       ç¬¬å››æ­¥ï¼šä½¿ç”¨MDK(Keil)新建工程模板

       é¦–先得选择CPU,这个在新建工程时,会有一个选择芯片的界面,我们只需按提示以及自己的实际情况来选择就好了。具体操作情况如下图:

       æ›´æ”¹å·¥ç¨‹åï¼ˆå°†é»˜è®¤çš„工程名改为“Template”的方法:选中工程,按“F2”键)并为工程添加项目组(Add group to project)。具体操作情况如下图:

       åˆ†åˆ«å‘各个项目组中添加我们刚刚从库中复制过来的文件文件(Add files to group)。具体操作情况如下图:

如何使用MDK5.0建立STMF工程

       1.解压stmfx_stdperiph_lib.zip 可以从ST官方网站免费下载。

       2.创建一个Demo文件夹

        2.1 新建子文件夹User,用于存放用户源程序

        2.2 新建子文件夹Project,用户KEIL工程文件

        2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。

       3. 复制源代码到Demo文件夹

        3.1 将stmfx_stdperiph_lib\STMFx_StdPeriph_Lib_V3.1.2Libraries文件整体复制到Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。

        3.2 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹.

       4. 新建一个Keil MDK工程

        4.1 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行操作

        4.2 选择CPU类型为 STMFZE (这是安富莱STM开发板采用CPU类型)

        4.3 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)

        4.4 根据自己的需要修改Target名字。(名字任意)

        4.5 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)

        User : 存放用户自己写的源代码

        RVMDK : 存放启动文件(汇编文件)

        StdPeriph_Driver : 存放ST标准库文件

        CMSIS : 存放CMSIS接口文件(这也是库的一部分)

        4.6 创建好Group后,我们开始依次添加文件。

       5. 修改源代码。我们将修改main.c 文件,换成我们自己跑马灯程序。

       6. 配置工程, 点击“Options”按钮

        6.1 切换到Output。

        选择Object文件夹。

        在Create Hex File 前打钩。

        6.2 切换带Listing。

        选择Listings文件夹

        6.3 切换到C/C++

        添加两个预编译宏 STMFX_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏)

        修改Includes路径

        6.4 切换到Debug

        选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器

        再 Run to main前打钩

        6.4 切换到Utilities

        选额调试器类型,我们选择Cortex-M3 J-Link

        点settings按钮,添加Flash编程算法,我们选择STM高密度器件,Flash容量K字节

       7. 配置工程完毕。下面开始编译。

       8. 编译OK,开始调试。

       9. 教程结束。

ThreadX系列 | 最新v6.1.6版本在MDK中的移植方法

       探索ThreadX v6.1.6在STMLRCT6的高效移植路径

一、环境准备与源码引入

       开始于小熊派IoT开发板,首要任务是创建一个裸机工程,确保printf功能正常。使用MDK作为开发工具,我们首先从GitHub下载ThreadX的量能饱和sat 源码最新源码:

       - 在MDK工程中,新建threadX/common和ports组,选择AC5编译器。

       - 添加必要的.c和.s文件,并配置头文件和ASM路径,确保与STMLRCT6的架构兼容。

       然而,mokee源码多大官方提供的tx_initialize_low_level.s试图自动接管处理器启动,这可能会引发一些问题。

二、问题与调整

       官方改动中涉及堆栈设置、向量表重定义和中断接管,这可能导致与STMLRCT6的中断管理冲突。为解决这个问题,我们定制了一个适配文件tx_initialize_low_level_bearpi.S:

       - 删除无用代码,注释掉官方部分,仅保留对STM启动文件中断处理的必要部分。

       接下来,redis get源码移除HAL库的中断函数,转而使用STM的启动文件,确保中断处理更加精准。

三、应用代码编写

       在application_entry.c中,我们开始编写两个核心任务,它们将运行在创建的线程上:

       void my_thread1_entry(ULONG thread_input) {

        while(1) {

        printf("thread 1 application running...\r\n");

        tx_thread_sleep();

        }

       }

       void my_thread2_entry(ULONG thread_input) {

        while(1) {

        printf("thread 2 application running...\r\n");

        tx_thread_sleep();

        }

       }

       void tx_application_define(void *first_unused_memory) {

        tx_thread_create(&thread1, "thread 1", my_thread1_entry, ...);

        tx_thread_create(&thread2, "thread 2", my_thread2_entry, ..., thread2_stack, THREAD2_STACK_SIZE);

       }

       // 在main.c中启动内核

       void main() {

        printf("启动ThreadX在BearPi IoT Board上");

        tx_kernel_enter();

       }

       完成以上步骤后,将工程编译并下载到开发板,务必关注终端输出,观察任务运行情况。

       注意:移植过程中可能会遇到自定义应用程序入口的考试程序源码编译错误,这是正常现象,只需根据提示调整即可。

       通过以上详细步骤,你将能够成功将ThreadX v6.1.6移植到STMLRCT6,并开始构建你的实时操作系统应用。享受编程的乐趣,让多线程在BearPi IoT板上高效运转!

MDK编译出现“Target not created ”是什

       当MDK编译过程中遇到"Target not created"的错误,这通常意味着编译未能成功,原因可能包括以下几个方面:

       语法错误:检查源代码中是否存在拼写、标点或语法规则的文字mud源码错误,比如未定义的变量。

       连接错误:如果程序试图调用外部函数但缺少相应的OBJ文件,这也会导致此问题。确保所有依赖文件已正确链接。

       程序大小限制:如果使用了Demo版MDK,编译后的程序大小必须在限制范围内,超过4K则无法创建目标。

       编译过程涉及将编程语言代码转化为机器码,通过编译器进行。编程语言可以是编译式或解释式,但选择取决于具体应用需求。

       编译程序主要包括两个关键步骤:

       词法分析:扫描源代码,将字符组合成单词,并形成单词符号串,这通常由词法分析器(扫描器)完成。

       语法分析:语法分析器依据语法规则检查单词符号串是否构成有效的程序结构,如表达式和语句。

       为了优化编译过程,会生成中间代码,这是一种介于源代码和机器语言之间的抽象表示,简化了编译器的逻辑结构,方便进行优化。

       总之,"Target not created"错误表明程序存在编译或链接问题,需要通过检查源代码、函数调用和程序大小来定位并解决。

问一下路过的大神keil5与keil5mdk 的区别是什么?

       对于编程界的高手们,Keil5与Keil5MDK究竟有何区别?

       首先,让我们来澄清这两个术语。Keil5更像是一个基础的编程工具,它专注于提供一个直观且用户友好的代码编辑环境,让你能够编写和编辑源代码。它是一个纯粹的IDE(集成开发环境),主要负责代码的编写和预览。

       然而,Keil5MDK则是一个更为全面的解决方案,它在Keil5的基础上,增添了针对ARM芯片开发的深度。MDK(Microchip Development Kit)包含了编译器,这是至关重要的一步,因为编译器是将你的源代码转化为可执行代码的关键工具。此外,MDK还内置了一系列库文件,这些文件为你提供了丰富的功能和模块,使得开发过程更加高效。更重要的是,它还配备了强大的调试和模拟支持,让你能够实时检查和调试程序,确保代码的正确运行。

       换句话说,如果你只有Keil5而没有MDK,那么你可能无法完整地进行从编程到烧录的全流程,因为MDK提供的这些额外功能对于硬件交互和调试至关重要。因此,对于进行嵌入式系统开发的工程师来说,Keil5MDK无疑是一个不可或缺的伙伴。

copyright © 2016 powered by 皮皮网   sitemap