• (HAL库)实验1 点亮一个LED


    1、实验准备

    实验目标:点亮LED

    器材:海创stm32开发板和数据线

    image-20221120092317460

    2、CubeMX初始化

    2.1 新建工程

    打开STM32CubeMX软件(V6.6.1),点击左上角"File",再点击“New Project”。

    image-20221120095050759

    在出现的左上角搜索框里直接输入“STM32F103C8T6”,在下方会出现两个芯片,选择“STM32F103C8T6”,再点击右上角的“Start Project”。

    image-20221120095842964

    2.2配置RCC时钟源

    接下来配置MCU的各种资源和外设,我们按照配置RCC->SYS->GPIO的顺序来。大家有发现这3个配置首字母为R、S、G,为了查找方便,在左侧选择“A->Z”,即各种配置的名称会按照字母顺序排列。

    image-20221120100312301

    选择“RCC”,出现两个选项。第一个选项 High Speed Clock(HSE),用于配置 HSE。第二个选项 Low Speed Clock(LSE),用于配置 LSE。我们都选择“Crystal/Ceramic Resonator”,意思是使用晶振/陶瓷振荡器

    image-20221120102715118

    配置完成后观察操作界面右侧的芯片引脚配置。芯片左侧相应的引脚由灰色变为绿色,表示该引脚被使用。

    image-20221120103246668

    image-20221120103744942

    2.3配置SYS

    选择“SYS”,在Debug中选择“Serial Wire”。

    image-20221120105240072

    这个选项容易被忽视。在我们的开发板可以通过下图4个引脚使用STLINK-V2下载调试程序,如果未配置“Debug”选项,有可能会导致下载一次后不能再次下载。

    image-20221120105733037

    在配置完“Debug”后,发现PA13和PA14引脚被使用。在项目中如果发现引脚数目有限,可以考虑使该两个引脚不用做调试引脚。

    image-20221120110409846

    2.4配置GPIO引脚

    接下去配置GPIO引脚,选择左侧的“GPIO”。

    image-20221120110915221

    根据原理图可知,我们使用PA7或者PA8控制LED,以PA7为例。

    image-20221120115331604

    点击PA7引脚,选择“GPIO_Output”。

    image-20221120115510789

    在软件操作界面中出现下图,选中①处PA7引脚,②处出现引脚配置界面。

    image-20221120115635541

    根据下图进行配置。

    image-20221120121751749

    ①处表示有效电平状态。根据原理图可知,低电平点亮,因此我么配置“LOW”。

    image-20221120120812260

    ②处表示输出模式,有推挽(Output Push Pull)开漏(Output Open Drain)两者模式选择。关于两者模式具体不展开,目前选择推挽模式

    ③处上下拉模式。有三个选项,依次表示不上拉或下拉/上拉/下拉。实验中我们选择上拉

    ④处表示引脚传输速度,选项依次表示低速/中/高。实验中没特殊要求,选择低速即可。

    ⑤表示引脚标签,也就是别名的意思。按照以往取名方式,我们就取LED2

    2.5配置时钟

    选择“Clock Configuration”。

    image-20221120123214245

    根据①②③④依次配置,关于时钟部分可参考阶段一时钟部分相关视频,由于考虑到CubeMX软件配置的便利性及大部分使用的情况,目前大家只需按下图配置即可。

    image-20221120123356165

    2.4工程设置

    点击右上角“GENERATE CODE”。

    image-20221120204410895

    弹出一个提示对话框,意思是工程的名字不能空,①处确实为空,因此我们要设置工程名字,例如“demo”。

    image-20221120204512919

    这里涉及到工程存储位置的问题,我们可以先在桌面新建一个文件夹,命名为demo

    image-20221120204831598

    按①②③④配置,②即为将工程保存到刚刚新建的demo文件夹。③处表示IDE的选择,目前本人主要使用MDK,因此选择“MDK-ARM”,④处可以选择“V5”,意思是MDK版本不能低于V5。

    image-20221120205005895

    “Project”配置完成后,点击“Code Generator”,如②所示。

    image-20221120205653224

    按照红色框进行配置,对①~⑦选项进行简单介绍。

    ①将HAL库的所有库文件都复制到新建的工程文件中;

    ② 只复制所需要的库文件;

    ③不复制文件,直接从软件包存放位置导入库函数。

    建议选择②。①项选择会导致整个文件大,编译时间长。③项缺点是如果将程序复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径。②项也有缺点,如新增外设,需要重新用STM32CubeMX导入,但是综合来看②项相对合适。

    ④每个外设生成单独的.c/.h文件,根据以往经验建议勾选上。

    ⑤重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。程序员对此比较熟悉,也主要看大家需要。

    ⑥重新生成时保留用户代码。在本次实验中我会在在main.c中添加了一段代码,重新生成时会在main.c中保留之前添加过的这段代码。这里有个前提,代码写在规定的位置,否则同样会删除。什么叫规定的位置,以后会提到。

    ⑦翻译起来比较拗口,举个例子,比如之前在项目中使用到了IIC,通过配置会生成IIC文件,现在不需要了,重新生成文件的话我们一般也希望IIC相关文件会删除掉,因此建议勾选。

    image-20221120210055751

    2.5生成代码

    点击右上角“GENERATE CODE”。

    image-20221120214600071

    出现对话框,这里我选择“Close”,大家根据需要即可。

    3、功能实现

    3.1 程序编写

    STM32CubeMX软件初始化完成后,接下去需要添加代码功能实现部分。找到demo.uvprojx文件,双击打开。

    image-20221120214925347

    打开工程后建议大家先把工程编译一下,找到“main.c”,双击打开,根据下图在指定位置输入HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);。

    image-20221120220838934

    编译一下,0错误,0警告。

    image-20221120221458798

    3.2代码烧录

    打开烧录软件,目前这款会自动找到Port,如①处所示,如果没有自动搜索到,点击“搜索串口”;在②处找到hex文件;③处设置“不使用RTS和DTR”。

    image-20221120222245024

    准备工作完成后,点击“开始编程”,按住BOOT0按键,按下STM复位按键,松开STM复位按键,松开BOOT0按键,程序开始烧录。

    4、实验现象

    观察开发板,LED点亮。

    image-20221120222920965

    这里有个小bug,该LED丝印层标为LED3。程序中我们设置该LED名字为LED2,稍微有点混,下次通过视频讲解下这个问题,大问题也没有。到目前为止成功点亮LED。

  • 相关阅读:
    【JVM】类加载器 Bootstrap、Extension、Application、User Define 以及 双亲委派
    jwt生成token:An expected CSRF token cannot be found
    Chainlit快速实现AI对话应用并将聊天数据的AWS S3 和 Azure Blob云服务中
    带你全方位了解光谱共焦位移传感器
    3389,为了保障3389端口的安全,我们可以采取的措施
    【蓝桥杯选拔赛真题26】python统计字符个数 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
    信息系统项目管理师必背核心考点(七十三)黑/白/灰盒测试
    SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务;集成Nacos配置中心(十九)
    ACCESS实例2 资料管理4——资料管理的报表
    嵌入式单片机及外设(硬件)知识基础三
  • 原文地址:https://blog.csdn.net/daniaoxp/article/details/127957998