使用STM32做流水灯

这篇具有很好参考价值的文章主要介绍了使用STM32做流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(一)STM32介绍

STM32,从字面上来理解, ST 是意法半导体, M 是 Microelectronics(微电子学) 的缩写, 32 表示32 位,合起来理解, STM32 就是指 ST 公司开发的 32 位微控制器。

1.STM32特点

1.强大的性能:STM32单片机基于ARM Cortex-M处理器核心,提供高性能的计算能力和快速的指令执行速度。
2.丰富的外设接口:STM32提供了丰富的外设接口,包括通用IO口、串行通信接口(UART、SPI、I2C)、模拟输入输出、定时器、中断控制器、模拟转换器等。
3.多种存储器选项:STM32单片机内置不同容量的闪存,用于存储程序代码和数据。闪存容量的大小可以根据应用需求进行选择。此外,还提供了片内RAM用于存储临时数据和堆栈。
4.低功耗设计:STM32单片机具有低功耗设计,可以根据应用需求灵活地控制功耗。它提供了多种低功耗模式,可以将处理器和外设进入低功耗状态,以延长电池寿命或降低功耗消耗。
5.安全性保护:STM32单片机内置多种安全性保护功能,包括存储器保护、堆栈保护、调试和追踪保护等。这些功能有助于防止非法访问和攻击,提高系统的安全性。
6.全面的开发工具和支持:STM32提供了全面的开发工具,包括集成开发环境(IDE)、调试器和编译器等。同时,意法半导体还提供了丰富的软件库和例程,帮助开发者快速搭建应用。

(二)点亮LED灯

想要点亮LED灯就需要用到GPIO端口,大致分为三个步骤
1.打开GPIO口的时钟
2.初始化GPIO口
3.设置低电平

1.打开时钟

打开GPIO端口A、GPIO端口B、GPIO端口C时钟

#define RCC_APB2ENR (*(unsigned int *)0x40021018)
RCC_APB2ENR |= (1<<2); // 开启 GPIOA 时钟
RCC_APB2ENR |= (1<<3); // 开启 GPIOB 时钟
RCC_APB2ENR |= (1<<4); // 开启 GPIOC 时钟

2.初始化GPIO口

stm32流水灯程序代码,stm32,单片机,嵌入式硬件
这里我们使用推挽输出

#define GPIOB_CRH (*(unsigned int *)0x40010C04)
#define GPIOC_CRH (*(unsigned int *)0x40011004)
#define GPIOA_CRL (*(unsigned int *)0x40010800)

GPIOB_CRH&= 0xffffff0f;	//设置位 清零		
GPIOB_CRH|=0x00000020;  

	GPIOC_CRH &= 0x0fffffff; //设置位 清零		
	GPIOC_CRH|=0x30000000; 


	GPIOA_CRL &= 0xfff0ffff; //设置位 清零		
	GPIOA_CRL|=0x00010000; 

3.设置低电平

设置PA4,PB9和PC15为低电平

#define GPIOB_ODR (*(unsigned int *)0x40010C0C)
#define GPIOC_ODR (*(unsigned int *)0x4001100C)
#define GPIOA_ODR (*(unsigned int *)0x4001080C)
GPIOB_ODR |= (1<<9); 
GPIOC_ODR |= (1<<15); 
GPIOA_ODR |= (1<<4);  

(三)实现流水灯及仿真

打开keil5软件,新建一个项目
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
输入文件名,然后保存
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
选择STM32F103C8,然后下一步
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后不用管,直接点OK
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后需要将启动文件加入到项目中,我们先打开keil5的所在位置
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后可以按照下列路径找的启动文件
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
选择文件startup_stm32f10x_md.s复制(若没找的上述路径也可以直接搜素文件名)
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后拷贝到项目文件夹中
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
打开之前建立项目,双击Source Group 1,添加之前的拷贝文件
stm32流水灯程序代码,stm32,单片机,嵌入式硬件

然后新建文档
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
将代码写进文档中,代码如下(参考STM32 F103之点亮LED流水灯 (STM32入门学习))

#define GPIOB 0x40010C00
#define GPIOC 0x40011000
#define GPIOA_BASE 0x40010800
#define RCC_APB2ENR (*(unsigned int *)0x40021018)
#define GPIOB_CRH (*(unsigned int *)0x40010C04)
#define GPIOC_CRH (*(unsigned int *)0x40011004)
#define GPIOA_CRL (*(unsigned int *)0x40010800)
#define GPIOB_ODR (*(unsigned int *)0x40010C0C)
#define GPIOC_ODR (*(unsigned int *)0x4001100C)
#define GPIOA_ODR (*(unsigned int *)0x4001080C)
	


void SystemInit(void);
void Delay_ms(volatile  unsigned  int);
void A_LED_LIGHT(void);
void B_LED_LIGHT(void);
void C_LED_LIGHT(void);
void Delay_ms( volatile  unsigned  int  t)
{
     unsigned  int  i;
     while(t--)
         for (i=0;i<800;i++);
}

void A_LED_LIGHT(){
	GPIOA_ODR=0x0<<4;		//PA4低电平
	GPIOB_ODR=0x1<<9;		//PB9高电平
	GPIOC_ODR=0x1<<15;		//PC15高电平
}
void B_LED_LIGHT(){
	GPIOA_ODR=0x1<<4;		//PA4高电平
	GPIOB_ODR=0x0<<9;		//PB9低电平
	GPIOC_ODR=0x1<<15;		//PC15高电平
}
void C_LED_LIGHT(){
	GPIOA_ODR=0x1<<4;		//PA4高电平
	GPIOB_ODR=0x1<<9;		//PB9高电平
	GPIOC_ODR=0x0<<15;		//PC15低电平	
}

int main(){
	int j=100;
	// 开启时钟
	RCC_APB2ENR |= (1<<3); // 开启 GPIOB 时钟
	RCC_APB2ENR |= (1<<4); // 开启 GPIOC 时钟
	RCC_APB2ENR |= (1<<2); // 开启 GPIOA 时钟
	
	
	// 设置 GPIO 为推挽输出
	GPIOB_CRH&= 0xffffff0f;	//设置位 清零		
	GPIOB_CRH|=0x00000020;  //PB9推挽输出

	GPIOC_CRH &= 0x0fffffff; //设置位 清零		
	GPIOC_CRH|=0x30000000;  //PC15推挽输出


	GPIOA_CRL &= 0xfff0ffff; //设置位 清零		
	GPIOA_CRL|=0x00010000; //PA4推挽输出

	// 3个LED初始化为不亮(即高点位)
	GPIOB_ODR |= (1<<9); 
	GPIOC_ODR |= (1<<15); 
	GPIOA_ODR |= (1<<4);  
	
	while(j){
		
		B_LED_LIGHT();
		Delay_ms(10000);

		C_LED_LIGHT();
		Delay_ms(10000);

		A_LED_LIGHT();
		Delay_ms(10000);
	}
	
}


void SystemInit(){
	
}

然后保存,以.c为后缀
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后再将新建的C文件加入Source Group 1中
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
打开魔法棒
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
打开Output,在Create HEX File处打勾
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
最后编译,可以看到没有问题
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后开始仿真,打开protues新建一个工程
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
填写文件名,文件地址,然后下一步
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
选择原理图DEFAULT
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
不创建PCB布板设计
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
选择没有固件项目
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
点完成
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
点击左上的P字母,打开后搜索STM32,选择STM32F103R6
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
电路连接如下
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后配置STM32,右键点击STM32F103R6,选择编辑属性
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
然后在program file中添加之前添加的hex文件,然后把Crystal Frequency改成8M
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
还需要配置供电网(如果不配置可能在调制是会出错),在最上面一行找到设计,点进去后点击配置供电网,名称处选择VCC/VDD,在未链接电网中找到VDDA、VSSA,将它们添加到VCC/VDD中
stm32流水灯程序代码,stm32,单片机,嵌入式硬件

确认添加后,点击确定
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
接下来就是仿真运行

流水灯仿真

电路连接和烧录

电路图链接如下
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
打开烧录程序进行烧录
stm32流水灯程序代码,stm32,单片机,嵌入式硬件
查看成果

6A1EF67D8E5EEFEEB0C2A9E75A7F13C5文章来源地址https://www.toymoban.com/news/detail-759374.html

到了这里,关于使用STM32做流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32流水灯

    好的,以下是一篇高质量的CSDN博客STM32流水灯文章: STM32是一种强大的单片机芯片,由STMicroelectronics公司研发。该芯片具有高性能、低功耗和广泛的功能集,可广泛应用于工业控制、车载控制、消费电子等领域。在本文中,我们将介绍如何使用STM32实现流水灯的简单例程程序

    2024年02月06日
    浏览(32)
  • stm32实现流水灯

    目录 一、STM32F103C8实现流水灯  二、注意事项  三、总结 打开keil,创建新项目 选择对应芯片    实验代码 c语言代码 汇编语言 添加驱动文件   烧录,烧录前设置生成hex文件    构筑完成后在项目文件的Objects文件中会生成hex文件 接好线路  hex文件生成后用mcuisp进行烧录 实

    2024年02月05日
    浏览(36)
  • 基于stm32的流水灯实现

    主控芯片:  正点原子STM32F103ZET6精英开发板 oled:中景园七针脚0.96寸oled 代码编程软件: keil5 代码下载地址: stm32流水灯项目 希望大家仔细看一看是否符合自己的需求,实际上本文中写到的很多东西已经能为课设所用,理清逻辑后自己编程也很方便的,但如果想直接copy我的项目

    2024年02月07日
    浏览(29)
  • STM32(一):流水灯 (标准库函数)

    STM32F103VET6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。 1.1 简要说明: 该款芯片 为 100引脚 , 512KFlash 64kSRAM LQFP 封装 32位 Cortex内核 内核 Cortex-M3 Flash 512K×8bit SRAM 64K×8bit GPIO 80个 ADC 12位 ADC 三路

    2024年04月10日
    浏览(30)
  • STM32MP157汇编流水灯

    2024年02月07日
    浏览(33)
  • (STM32基础)STM32实现LED闪烁&LED流水灯&蜂鸣器

    1、按照新建工程步骤创建工程,新建start、library、user三个文件夹,从固件库添加相应文件 2、keilkil小程序用来清理listings和objects文件夹中编译产生的中间文件,以后需要打包工程的话可以先用keilkill先清理,这样文件夹会大大缩小所占内存。 在library中可以查看外设函数库,

    2024年02月07日
    浏览(45)
  • 【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)

    电路图示例1 电路图示例2 main.c 接线图如下图所示: 点击下载,现象为LED闪烁。 main.c main.c stm32F103工程模板 01-LED闪烁.rar 02-LED流水灯.rar 03-蜂鸣器示例程序.rar 参考: 【STM32】江科大STM32学习笔记汇总

    2024年03月19日
    浏览(47)
  • STM32F103之点亮LED流水灯

    目录 一、设计分析及代码思路 1.实现流水灯步骤 2.代码设计过程 二、创建项目 1.新建项目 2.编写代码 三、仿真运行 四、连接电路 1.器件连接 2.程序烧录 五、代码烧录及实现 1.烧录实现 2.流水灯实现 六、总结  配置时钟使能寄存器 配置端口寄存器 设置输出模式 实物连接及

    2024年04月25日
    浏览(30)
  • STM32——led灯的点亮+闪烁+流水灯的实现

    1.原理 其方式有两种一种是寄存器方式一种是库函数方式,但其原理都是一样的。如原理图所示,与LED相连接的IO口置低电平即可点亮led灯 2.寄存器方式–代码 3.库函数–代码 (1)led.c:函数led_config() (2)main.c调用led_config 4.结果展示 原理:让连接的IO口先置零再置1可以使其先亮

    2024年02月08日
    浏览(44)
  • STM32第二课:灯的亮灭、流水灯、有源蜂鸣器

             STM32的第二课,我们来学习如何使用STM32控制等的亮灭,使用多重控制制作我们自己的流水灯,然后再了解一下有源蜂鸣器的用法,创造出不一样的声音。         首先开头包含STM32的头文件#include \\\"stm32f10x.h\\\",这个头文件包含STM32众多的重要驱动,一定要把这个头文

    2024年01月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包