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、新建文件main.c并双击source group文件夹添加进去

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

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

使能时钟

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

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

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

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

总结

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

二、库函数点灯


1 建立库函数工程模板

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

  2. STM32F10x_FWLib文件夹下需要找到两个文件夹并复制进来,在这条路径下:
    STM32F1xx固件库STM32F10x_StdPeriph_Lib_V3.5.0Libraries STM32F10x_StdPeriph_Driver

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

2 新建库函数点灯工程

  1. 把Template复制一份并改名为库函数点灯
      1. 编写led.h
      1. 编写main.c,调用初始化函数,并通过复位和置位函数控制灯的亮灭

      声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

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

相关推荐