野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25936|回复: 4

使用寄存器LED点亮

[复制链接]
发表于 2021-5-8 16:27:02 | 显示全部楼层 |阅读模式
[img]file:///C:\Users\www23\Documents\Tencent Files\2387643389\Image\C2C\@{M[E8NRIQZY_LO~1HN)(%U.png[/img]
火哥的B站视频使用PB0点亮绿灯,我试了试PB5点亮别的灯,结果不行,求帮助,板子是指南者,以下是代码
#include "stm32f10x.h"
int main(void)
{
        *(unsigned int*)0x40010C0C &= ~(1<<5);//配置ODR寄存器
        *(unsigned int*)0x40010C00 |= ((1)<<(4*5));//配置IO口为输出
        *(unsigned int*)0x40021018 |= (1<<3);//打开GPIOB端口的时钟
}
void SystemInit(void)
{
       
}


回复

使用道具 举报

发表于 2021-5-9 10:15:28 | 显示全部楼层
试着改变一下顺序,先打开时钟,再配置为输出,最后给ODR赋值
回复 支持 反对

使用道具 举报

发表于 2021-5-9 11:08:45 | 显示全部楼层
本帖最后由 liang118038 于 2021-5-9 11:10 编辑

为啥你要这样用?stm32f10x.h本身就给你定义好了寄存器助记符给你用,寄存器正确用法应该这样:
#include "stm32f10x.h"
int main(void)
{
  RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;//开启GPIOB时钟
  GPIOB->CRL   |=  GPIO_CRL_MODE5;         //设置GPIOB5为输出50MHz模式
GPIOB->ODR |=  GPIO_ODR_ODR5;         //置GPIOB5为高电平
GPIOB->ODR &=~GPIO_ODR_ODR5;        //置GPIOB5为低电平
while(1);

}
回复 支持 反对

使用道具 举报

发表于 2021-5-9 11:18:50 | 显示全部楼层
把时钟放前面去试试呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-9 20:58:10 | 显示全部楼层
我一定要学好32 发表于 2021-5-9 11:18
把时钟放前面去试试呢

ok,已经好了,这个和顺序也有关系呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 17:47 , Processed in 0.027597 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表