您的位置:首页 > 其它

STM32C8T6之使用寄存器点亮LED灯

2020-03-25 18:54 176 查看

这几天肺炎闹得沸沸扬扬,我窝在家里学习STM32。这篇博客筹备了3-4天吧,终于完成了。
实验电路如下图所示:

这里以PC13为例。
用寄存器点亮LED灯,主要就是操作GPIOx_ODR寄存器,GPIOx_CRH寄存器,RCC_APB2ENR寄存器。主要是涉及到指针操作,偏移。其他的也没什么。
下面我们来写代码:

//打开GPIOC端口的时钟                              //PC13
*(unsigned int *)0x40021018 |= ( 1 << 4 );        //将0x40021018强制类型转换成指针,进行指针操作。

//配置 IO口为输出,配置GPIOx_CRH寄存器。通用推挽输出模式,速度为10M。
*(unsigned int *)0x40011004 |= ( 1 << (4*5) );

//控制 ODR 寄存器,
*(unsigned int *)0x4001100C &= ~( 1 << 13 );            //APB2上的GPIOC的起始地址加上偏移地址

以上代码都是写在main.c文件中的。时钟部分要注意的是APB2和APB1是挂载到AHB上的,寻找起始地址是不再是GPIO端口C的起始地址了。另外一定要加上偏移地址。
如此就能点亮灯了。
希望大佬指点一二。
最后祝大家在新的一年身体健康,平安无事!

  • 点赞
  • 收藏
  • 分享
  • 文章举报
嵌入式大头兵 发布了5 篇原创文章 · 获赞 3 · 访问量 6256 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: