ARM课作业一:流水灯

一、引言

之前没接触过stm32,纯小白,所以在上课听老师讲的同时,在课后还看了b站上的教程,链接如下,完成作业的时候也参考了这个教程
STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

拿到老师发的板子后还自主学习了怎么焊排针、接线等等,最终完成了本次作业

介绍

STM32F103VET6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。

STM32系列微控制器采用了ARM Cortex-M内核,包括Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7等不同的内核版本,以满足不同应用场景下的性能和功耗需求。此外,STM32产品系列还提供了丰富的外设资源,包括通用输入输出端口(GPIO)、通用定时器(TIM)、串行通信接口(USART/SPI/I2C)、模拟数字转换器(ADC/DAC)等,以满足不同应用的需求

二、代码

第一次作业尝试,直接在main.c函数里实现了,没有用led.c和led.h,功能实现简单粗暴

1.main.c

直接设置对应led引脚的高低电平控制灯的亮灭

先初始化GPIO,使用RCC_APB2PeriphClockCmd函数使能GPIOA时钟,并配置GPIOA的引脚8、11和12为输出模式,设置速度为50MHz

然后进入主循环, GPIO_ResetBits让引脚转为低电平,GPIO_SetBits让引脚转为高电平,因为LED低电平亮,所以GPIO_ResetBits为亮灯,GPIO_SetBits为灭灯

通过“亮灭灭”“灭亮灭”“灭灭亮”然后循环,实现流水灯 

每段后再加了个延时,使状态切换速度变慢,不然切换速度太快看上去灯是一直亮的

#include "stm32f10x.h"              

static void delay(uint32_t time);

int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    
GPIO_InitTypeDef GPIO_InitStructure;//GPIO结构体有三个参数
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;//模式
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12;//端口
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//速度
    
GPIO_Init(GPIOA,&GPIO_InitStructure);


    while (1)
    {
    GPIO_ResetBits(GPIOA, GPIO_Pin_8);
    GPIO_SetBits(GPIOA, GPIO_Pin_11);
		GPIO_SetBits(GPIOA, GPIO_Pin_12);
    delay(500);//亮灭灭
					
    GPIO_SetBits(GPIOA, GPIO_Pin_8);
    GPIO_ResetBits(GPIOA, GPIO_Pin_11);
		GPIO_SetBits(GPIOA, GPIO_Pin_12);
    delay(500);//灭亮灭
		
		GPIO_SetBits(GPIOA, GPIO_Pin_8);
    GPIO_SetBits(GPIOA, GPIO_Pin_11);
		GPIO_ResetBits(GPIOA, GPIO_Pin_12);
    delay(500);//灭灭亮
    }
}

static void delay(uint32_t time)
{
  uint32_t i,j;
 
  for(i=0;i<time;++i)
  {
    for(j=0;j<10000;++j)
    {       
      //空循环        
    }
  }
}

2.延时函数

用老师给的延时函数代码

static void delay(uint32_t time)
{
  uint32_t i,j;
 
  for(i=0;i<time;++i)
  {
    for(j=0;j<10000;++j)
    {       
      //空循环        
    }
  }
}

三、实验结果

视频一直上传失败所以传了b站

作业一

四、总结

找灯对应的引脚找了一会儿才确定为GPIOA 的 8、11 和 12

这次作业让我更好地了解了STM32GPIO点灯,锻炼了我的动手实践能力,拓展了专业知识,令我受益匪浅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值