F407+RT-Thread(三)——新建工程(点亮LED)

简介

通过上一篇文章F407+RT-Thread(二)——环境搭建,搭建好了开发环境。
新建RT-Thread项目工程有三种方法:

  1. 在原有的工程上移植RT-Thread,F407+RT-Thread(一)——快速入门就是这样的。
  2. 使用RT-Thread Studio新建项目工程,因为studio用起来没有那么美好,所以不考虑。
  3. 使用ENV新建项目工程,这个是本文即将做得事情。

使用ENV新建项目工程

在新建项目工程前,先要配置ENV一下。
进入ENV文件夹,双击env.exe文件,在界面的标题栏右键—settings—左侧栏的Integration—右边上部的“Register”—“Save settings”。这样做了之后,在任何文件夹点击右键后都会出现选项“ConEmu Here”。

使用env生成工程

  1. 打开下载的RT-Thread 完整版 4.0.2,进入源码的bsp文件夹,选择正点原子的F407探索者对应的文件夹,即**rt-thread-v4.0.2\bsp\stm32\stm32f407-atk-explorer**。
  2. 在文件夹右键—ConEmu Here打开env,输入scons --dist。这个命令是用来搭建项目框架的。
  3. 进入dist文件夹,将整个stm32f407-atk-explorer文件夹复制到你需要的文件路径去,比如本人喜欢的D:\myprj\prj_stm32\。
  4. 在D:\myprj\prj_stm32\stm32f407-atk-explorer\文件夹右键—ConEmu Here打开env,输入menuconfig,进行相关配置。本文的设置是:
    Hardware Drivers Config --> On-chip Peripheral Drivers --> Enable GPIO和Enable UART --> Enable UART3。
  5. 按esc退出,选择Yes进行保存设置。
    在env命令行输入 scons -target=mdk5,生成新的项目工程。

使用STM32CubeMX配置底层驱动

  1. 打开文件夹 D:\myprj\prj_stm32\stm32f407-atk-explorer\board\CubeMX_Config,双击打开文件CubeMX_Config.ioc,可以根据个人需要配置MCU的所有参数,本文不做任何变动。直接点击Project Manger点击GENERATE CODE,生成了新的工程。
    生成新的工程之后会出现提示框,选择Close就行了。
  2. 在进入文件夹D:\myprj\prj_stm32\stm32f407-atk-explorer,双击project.uvprojx,打开新建的工程项目。
  3. 在main.c中输入代码。

main.c

/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2018-11-06     SummerGift   first version
 * 2018-11-19     flybreak     add stm32f407-atk-explorer bsp
 */

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

/* defined the LED0 pin: PF9 */
#define LED0_PIN    GET_PIN(F, 9)

/* defined the LED1 pin: PF10 */
#define LED1_PIN    GET_PIN(F, 10)

static struct rt_thread led0_thread;   //线程控制块
static struct rt_thread led1_thread;//       //线程控制块 
ALIGN(RT_ALIGN_SIZE)
static rt_uint8_t rt_led0_thread_stack[1024];// //线程栈
static rt_uint8_t rt_led1_thread_stack[1024];//线程栈

//线程LED0
static void led0_thread_entry(void* parameter)
{
    while(1)
    {
        rt_pin_write(LED0_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED0_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }
}

//线程LED1
static void led1_thread_entry(void* parameter)
{
    while(1)
    {
        rt_pin_write(LED1_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED1_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }
}
 
int main(void)
{
//    LED_Init();
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
    
    rt_thread_init(&led0_thread,
                    "led0",
                    led0_thread_entry,
                    RT_NULL,
                    &rt_led0_thread_stack[0],
                    sizeof(rt_led0_thread_stack),
                    3,
                    20);
    rt_thread_startup(&led0_thread);
                    
    rt_thread_init(&led1_thread,
                    "led1",
                    led1_thread_entry,
                    RT_NULL,
                    &rt_led1_thread_stack[0],
                    sizeof(rt_led1_thread_stack),
                    3,
                    20);
    rt_thread_startup(&led1_thread);
}

运行

运行后可以看到两个灯在闪烁,通过串口调试助手可以看到开发板的串口1打印了RT-Thread的login信息:

\ | /
-RT- Thread Operating System
/ | \ 4.0.2 build May 17 2020
2006 - 2019 Copyright by rt-thread team
msh >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值