用STM32最小系统核心板搭建电路实现流水灯

一、 STLINK检查

插入stlink检查驱动是否安装好
在这里插入图片描述
设备前未有感叹号,驱动安装成功。
在这里插入图片描述

二、建立工程文件

2.1 新建项目

创建项目
在这里插入图片描述
选择STM32F103C8开发板
在这里插入图片描述
创建项目出现弹窗,勾选core项
在这里插入图片描述
在output里选择create hex file
在这里插入图片描述
加入启动文件
在这里插入图片描述在这里插入图片描述

2.2 写入代码

1.delay函数

#include "stm32f10x.h"

/**
  * @brief  微秒级延时
  * @param  xus 延时时长,范围:0~233015
  * @retval 无
  */
void Delay_us(uint32_t xus)
{
	SysTick->LOAD = 72 * xus;				//设置定时器重装值
	SysTick->VAL = 0x00;					//清空当前计数值
	SysTick->CTRL = 0x00000005;				//设置时钟源为HCLK,启动定时器
	while(!(SysTick->CTRL & 0x00010000));	//等待计数到0
	SysTick->CTRL = 0x00000004;				//关闭定时器
}

/**
  * @brief  毫秒级延时
  * @param  xms 延时时长,范围:0~4294967295
  * @retval 无
  */
void Delay_ms(uint32_t xms)
{
	while(xms--)
	{
		Delay_us(1000);
	}
}
 
/**
  * @brief  秒级延时
  * @param  xs 延时时长,范围:0~4294967295
  * @retval 无
  */
void Delay_s(uint32_t xs)
{
	while(xs--)
	{
		Delay_ms(1000);
	}
} 

2.delay函数头文件

#ifndef __DELAY_H
#define __DELAY_H
#include "stm32f10x.h"
void Delay_us(uint32_t us);
void Delay_ms(uint32_t ms);
void Delay_s(uint32_t  ps);

#endif

3.main函数

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	while (1)
	{
		GPIO_Write(GPIOA, ~0x0001);	//0000 0000 0000 0001
		Delay_ms(500);
		GPIO_Write(GPIOA, ~0x0002);	//0000 0000 0000 0010
		Delay_ms(500);
		GPIO_Write(GPIOA, ~0x0004);	//0000 0000 0000 0100
		Delay_ms(500);

	}
}

三、写入代码,烧录

3.1 STlink环境配置

  1. 修改Define,和Include Paths,勾选c99Mode在这里插入图片描述

  2. 选择ST-Link Debugger 并进入setting
    在这里插入图片描述

  3. Target Com选择SW
    在这里插入图片描述

3.2 电路连接

硬件线路连接图如图所示
在这里插入图片描述
实物图如下:
在这里插入图片描述

3.3 编译烧录

在这里插入图片描述

3.4 实验效果

在这里插入图片描述

四、总结

通过本次实验学会了如何用代码在STM32上实现流水灯的操作,加强了自己的动手能力。

五、参考资料

STM32F103C8T6实现流水灯
stm32寄存器实现流水灯

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值