2、STM32点亮LED灯

STM32寄存器和库函数点灯

  • 一、寄存器操作
      • 1、新建工程,新建一个目录存放以后所有的工程stmproject,在这个目录下新建文件夹寄存器点灯,文件名为LED。
      • 2、新建文件main.c并双击source group文件夹添加进去
      • 3、添加启动文件,取官方固件库中根据FLASH大小选择型号,我选大容量hd
      • 4、编写main程序通过寄存器控制I/O口输入输出点灯
        • 使能时钟
        • 配置端口寄存器,再通过端口寄存器输出数据
      • 总结
  • 二、库函数点灯
    • 1 建立库函数工程模板
    • 2 新建库函数点灯工程
    • 3 调用库函数编写程序点亮
    • 4 程序升级

一、寄存器操作


1、新建工程,新建一个目录存放以后所有的工程stmproject,在这个目录下新建文件夹寄存器点灯,文件名为LED。

2、STM32点亮LED灯
如果需要安装别的安装包可以在这个网址下载。点击打开文件
2、STM32点亮LED灯

2、新建文件main.c并双击source group文件夹添加进去

2、STM32点亮LED灯

3、添加启动文件,取官方固件库中根据FLASH大小选择型号,我选大容量hd

2、STM32点亮LED灯
复制到点灯文件夹后再添加进source group
2、STM32点亮LED灯

4、编写main程序通过寄存器控制I/O口输入输出点灯

使能时钟

2、STM32点亮LED灯
下面写出代码

配置端口寄存器,再通过端口寄存器输出数据

stm32因为引脚太多,所以把引脚分成了几组,每组最多16个引脚,其中32位端口配置低寄存器控制低八位引脚,32位端口配置高寄存器控制高八位引脚。本次只用到了低八位

2、STM32点亮LED灯
每个引脚分为配置位和模式位4位来配置,首先确定模式位是输入还是输出,再确定输入和是输出模式下具体的模式。上图可以得到端口的起始地址和偏移地址。代码如下:

再用端口输出寄存器使PB5和PE5输出低电平(由pcb图可直),由下图可知偏移地址0x0C

2、STM32点亮LED灯
代码如下:

最后把程序下载到单片机里即可点亮两个小灯。

总结

1、首先新建工程时,需要启动文件,main里需要一个系统时钟。
2、STM32引脚多,为节约资源,每个引脚都需要开启对应时钟。
3、点亮LED主要是控制GPIO输出高电平或低电平,需要GPIO寄存器来实现。
4、置零,置一技巧
某几位置零 &=~(x<<y)
某位置一 |=(x<<y)
5、各种地址可以用宏定义表示出来放在一个头文件里,这样程序可读性更高,以后库函数变成就这样,结构相同需要重复的还可用结构体表示。如

二、库函数点灯


1 建立库函数工程模板

  1. 在stmproject文件夹下新建Template文件夹,并新建 USER,CORE,OBJ ,STM32F10x_FWLib这几个文件夹用于装需要的库文件。

    2、STM32点亮LED灯
    注:hd代表大容量,根据自身的芯片容量选取。
  2. STM32F10x_FWLib文件夹下需要找到两个文件夹并复制进来,在这条路径下:
    STM32F1xx固件库STM32F10x_StdPeriph_Lib_V3.5.0Libraries STM32F10x_StdPeriph_Driver

    2、STM32点亮LED灯
  3. OBJ里存放编译完的文件。
    到此为止,模板就建成了,以后需要建立工程之前可以直接复制一份改个名字。

2 新建库函数点灯工程

  1. 把Template复制一份并改名为库函数点灯
  2. 打开keil5,点击new uVision project ,把工程文件放在库函数点灯下的USER里,取名为LED,然后弹出界面选择自己的芯片,点击ok。
    2、STM32点亮LED灯
    2、STM32点亮LED灯
    这三个组分别把之前复制到同名文件夹下的.c文件添加进来,CORE多添加了一个启动文件。
  3. 点击魔术棒进入工程配置
    先配置文件输出,点击output,选择OBJ为输出文件夹
    2、STM32点亮LED灯
    5. 再USER文件夹中添加main.c文件,写下如下代码,点击编译,不报错就可以进行代码编写了。
    2、STM32点亮LED灯
    7. 再按照第三步添加HARDWARE组,组里添加led.c,
    添加完写下编译一下点左边加号就会有led.h,还需要配置一下C/C++选项卡include paths使得可以被找到。
    2、STM32点亮LED灯
    1. 先进入rcc的头文件寻找APB2外设时钟使能的函数
      2、STM32点亮LED灯
      点击右键可以回到函数的定义看到函数的参数怎么填
      2、STM32点亮LED灯
      由于这个函数第二个参数是一个结构体,所以我们需要用这个结构体实例化一个对象,所以可以右键转到结构体的函数定义。
      2、STM32点亮LED灯
      2、STM32点亮LED灯
      3. 编写led.c,把PB5和PE5时钟使能,并配置输入输出模式
      1. 编写led.h
      1. 编写main.c,调用初始化函数,并通过复位和置位函数控制灯的亮灭

      来源:jiaxierhhh

      声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月7日
下一篇 2022年1月7日

相关推荐