STM32F1 - 点亮LED_寄存器版

本文介绍了如何在C语言中通过配置寄存器控制STM32的LED灯,包括使用指针操作寄存器,解决Keil5编译错误,以及利用结构体和宏定义进行代码优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实验概述:

用配置寄存器的方式,开关一个LED灯,
只用标准库中提供的启动文件,


1> 建立工程

1

出现错误:导入文件类型错误

keil5编译中出现的错误(6):FCARM - Output Name not specified, please check ‘Options for Target - Utilities

错误原因:文件类型错误;
解决办法:
2

文件上右击,选择Options for…, 更改文件类型;
3


2> 向寄存器写数据

2

824

向寄存器地址,写数据

// 硬件电路 PB5 - LED0;	1:熄灭, 0点亮	

// 根据内存地址映射,得到寄存器地址	
#define RCC_APB2ENR_addr	0x40021018	
#define GPIOB_CRL_addr		0X40010C00
#define GPIOB_ODR_addr		0X40010C0C


int main(void)
{
    

	*((unsigned int *)RCC_APB2ENR_addr) = 0x00000008;	// 打开 GPIOB 端口时钟
	
	*((unsigned int *)GPIOB_CRL_addr) = 0x00300000;		// PB5 配置为推挽输出
	
	*((unsigned int *)GPIOB_ODR_addr) = 0x00000020;		// 关闭 LED0;
	//*((unsigned int *)GPIOB_ODR_addr) = 0x00000000;		// 打开 LED0;
	
	while (1) /* Stop! */;		
}
		
}

C语言指针应用

面试题:
用C语言向内存地址【0x40021018】写入0X8?

方法1:

unsigned int *p = (unsigned int *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值