实验概述:
用配置寄存器的方式,开关一个LED灯,
只用标准库中提供的启动文件,
1> 建立工程
出现错误:导入文件类型错误
keil5编译中出现的错误(6):FCARM - Output Name not specified, please check ‘Options for Target - Utilities
错误原因:文件类型错误;
解决办法:
文件上右击,选择Options for…, 更改文件类型;
2> 向寄存器写数据
向寄存器地址,写数据
// 硬件电路 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 *