STM32CubeMX与RT-Thread Studio协助使用(实现点亮LED)

1创建自己的项目

1-1选择板子

1-2生成的项目

运行一下看是否创建成功

零警告零错误

2配置STM32Cude

2-1找打如图图标点击(CubeMX的图标)

2-2输入自己安装的路径选中exe文件

点击Browse

找到如图选中,在打开(STM32CubeMX的安装路径可找到)

点击ko

选择型号在ok

2-1配置gpio实现点亮LED

配置时钟

配置UART1

配置下载方式

项目设置

生成代码,生成之后不用打开,直接关闭STM32CubeMX返回RT-Thread Studio即可

3RT-Thread Studio设置

注意

可以看到生成了如下文件

有的不会生成SConscript文件

3-1如果没有可以自己创建此文件(已生成可跳过)

右击cubemx文件创建文件

名字为(SConscript)

创建好之后输入如下内容


import os
from building import *

cwd = GetCurrentDir()
src  = Glob('*.c')
# add cubemx drivers
src = Split('''
Src/stm32f1xx_hal_msp.c
Src/main.c
''')

path = [cwd]
path += [cwd + '/Inc']

group = DefineGroup('cubemx', src, depend = [''], CPPPATH = path)

Return('group')

再点击如图按键(更新软件包)

运行会看到很多报错(大部分为重复定义)

如int  main(void)处

为它添加   __weak 即可

3-2查看时钟是否同步

打开选中的文件

最底部是时钟文件如图

图是已经同步好的,被注释的是原先的时钟


void clk_init(char *clk_source, int source_freq, int target_freq)
{
    /*
     * Use SystemClock_Config generated from STM32CubeMX for clock init
     * system_clock_config(target_freq);
     */
    extern void SystemClock_Config(void);
    SystemClock_Config();
}

如下函数可以打印时钟情况(在主函数填写即可==串口输出)

LOG_D("System Clock information");
            LOG_D("SYSCLK_Frequency = %d", HAL_RCC_GetSysClockFreq());
            LOG_D("HCLK_Frequency   = %d", HAL_RCC_GetHCLKFreq());
            LOG_D("PCLK1_Frequency  = %d", HAL_RCC_GetPCLK1Freq());
            LOG_D("PCLK2_Frequency  = %d", HAL_RCC_GetPCLK2Freq());
3-3在main函数中写入必要的文件

找到如图的main,c文件打开

添加头文件和必要的初始化函数

启用.c文件

1在文件中右键点击c/c++项目

左侧会弹出如图

在图中启用想要的.c文件(下图画线的是我已经启用的)

如何启动

1右键想启动的文件点击属性

2将图中的沟去点即可   ,并应用即可

之后运行项目的创建配置完成即可编写自己的代码

编写代码实现

/*
 * Copyright (c) 2006-2024, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-26     RT-Thread    first version
 */

#include <rtthread.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

#include "main.h"
#include "usart.h"
#include "gpio.h"

int main(void)
{
    int count = 1;

    HAL_Init();
    MX_GPIO_Init();
    MX_USART1_UART_Init();

    //设置初始是亮是灭
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, RESET);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, SET);

    while (count++)
    {
        //每隔一秒灯的亮灭反转
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_3);
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
        //串口输出
        LOG_D("Hello RT-Thread!");
        //延迟,在延迟期间使用权在内核,由内核分配
        rt_thread_mdelay(1000);
    }

    return RT_EOK;
}

此函数将实现灯的交替闪烁

建议

大家在编写时尽量使用系统的图这样会避免一些不必要的错误

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值