如何不使用固件库点亮Led灯----基于STM32103系列

1 篇文章 0 订阅

目录

1.建立工程

2.打开GOIO端口的时钟

3.配置IO口为输出(控制CRL寄存器)

4.配置ODR寄存器

点亮LED灯的所需条件

1.建立工程

首先建立相关工程文件,具体以单片机型号选择,我这选择STM32F103VE系列

其次,建立相关的.c和.h文件

    最后需要加入启动文件;如何下载启动文件;下面链接提供参考

      STM32如何下载官方固件库_连月亮都想脱离地球的博客-CSDN博客_stm32官方固件库

加入固件库的启动文件

 点击libraries

点击CMSIS文件

点击CM3文件

 进入DEvicSupport

再往后都是进入第一个文件;直到进入arm文件

 由于我使用的是高容量,所以选择第二个作为启动文件;

路径\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup

需要包含头文件stm32f10x,h的头文件,强调,需要加入.h文件

建立SystemInit函数,目的是为了骗过编译器而不报错

2.打开GOIO端口的时钟

从图中得出需要将第3位置1来开启时钟

 

找到寄存器地址RCC,从图中得到地址为0x40021000,RCC的偏移码为0x18;所以需要加上偏移码,即0x40021000+0x18=0x40021018

 代码如下

 3.配置IO口为输出(控制CRL寄存器)

配置第2、3位为通用推挽输出。第0、1位为输出模式,速度为10MHZ,即0001

(1)表示以四个位为一个组合即0001换算十进制为1;(4*0)表示为以四个位为一组

4.配置ODR寄存器

 找到寄存器地址,然后再找到GPIO的基地址

 GPIOB的基地址为0x40010c00+偏移码(0c)

取反是为了让第0位置0;达到输出低电平的效果,然后小灯就亮

 总体代码如下



int main(void )
{
	//打开GPIOB端口的时钟
	 *(unsigned int *)0x40021018 |= ((1) << 3);//1左移0位,由于0x400100c编译器不能识别,需要强转
	// 0x40010c00+0x0c=0x40010c0c;
	//配置IO口为输出(控制CRL寄存器)
	 *(unsigned int *)0x40010c00 |= ((1) << (4*0));//1左移0位,由于0x400100c编译器不能识别,需要强转
	//配置ODR寄存器
	*(unsigned int *)0x40010c0c &= ~(1<<0); //1左移到第0位取反再跟它相与
	
}


//置位 |=       清0 &=~


void SystemInit()
{
	//函数体为空目的是骗过编译器不报错
}

	

 最后;若有出现有误的地方,欢迎评论。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值