stm32寄存器点亮led灯

前提:本博客不详细讲原理,重点在于实践,如需要了解原理请参考下列博客:

http://t.csdn.cn/caa3I

软件准备

1.Keil uVision5

2.mcuisp

 3.CH340驱动程序

 软件设置及创建工程

进入Keil uVision5 点击新建project 选择第一个选项

 

 要安装对应的芯片包,我的是stm32F103VE

 选择好芯片之后问需不需要这些自带的软件包,我们这个实验用不到的。关闭即可。

 双击Source Group 1将启动文件添加至文件夹下,启动文件在官方提供的固件库下下载

程序展示

 再在文件夹下新建main.c存放我们编写的程序

根据需要自行屏蔽或者修改达到闪烁/常亮/改变颜色

#include "stm32f10x.h"

void delay(unsigned int t)
{
	unsigned int i,j;
	for(i=0;i<t;i++)
	for(j=0;j<110;j++);
}

int main(void)
{
	//白灯
	//打开RCC总控制信号APB2->GPIOB中IO端口B时钟使能
//	*(unsigned int *)0x40021018|=(1<<3);
//	//配置IO口为通用推挽输出模式,开发板需要配置PB0,PB1,PB5
//	*(unsigned int *)0x40010C00|=(1<<0);//PB0  G
//	*(unsigned int *)0x40010C00|=(1<<4);//PB1  B
//	*(unsigned int *)0x40010C00|=(1<<20);//PB5 R
	//配置端口输出数据寄存器当前状态
//	*(unsigned int *)0x40010C0C|=(0<<0);//G
//	*(unsigned int *)0x40010c0c|=(0<<1);//B
//	*(unsigned int *)0x40010c0c|=(0<<5);//R
		//打开GPIOB端口的时钟
	//蓝灯
//  *(unsigned int *)0x40021018 |= ((1) << 3);	
//	//配置IO口为输出
//	*(unsigned int *)0x40010C00 |= ((1) << (4*1));
//	//控制ODR寄存器
//	*(unsigned int *)0x40010C0C &= ~(1<<1);
	//打开GPIOB端口的时钟
	//绿灯
  *(unsigned int *)0x40021018 |= ((1) << 3);	
	//配置IO口为输出
	*(unsigned int *)0x40010C00 |= ((1) << (4*0));
//	//控制ODR寄存器
//	*(unsigned int *)0x40010C0C &= ~(1<<0);
	//打开GPIOB端口的时钟
	//红灯
//  *(unsigned int *)0x40021018 |= ((1) << 3);	
//	//配置IO口为输出
//	*(unsigned int *)0x40010C00 |= ((1) << (4*5));
//	//控制ODR寄存器
//	*(unsigned int *)0x40010C0C &= ~(1<<5);



	while(1)
	{
				int i=0;
        *(unsigned int*)(0x40010C0C) &=~(1<<0); //点亮小灯
        for (i=0; i<10000; i++);    //延时一段时间
        *(unsigned int*)(0x40010C0C) |=(1<<0);  //熄灭小灯
        for (i=0; i<30000; i++);  //延时一段时间
	}
}
void SystemInit(void)
{

	
}

void System Init() 是为了骗过编译器不报错

project架构

stm32f10x.h自己创建一个空白的头文件,其会自动匹配。

 

编译

自动生成的文件

 

 object文件夹下有编译后产生的文件

烧录程序

连接stm32和电脑

选择编译好的程序文件.hex


 搜索串口搜索到CH340对应stm32

上述检查无误点击开始编程,烧录成功会有提示。

RESET复位可以重新执行程序,如果没有成功可以按一下复位键 

效果图

参考博客:

1.http://t.csdn.cn/ZpX4b

2.http://t.csdn.cn/1tWoS

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值