这几天肺炎闹得沸沸扬扬,我窝在家里学习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的起始地址了。另外一定要加上偏移地址。
如此就能点亮灯了。
希望大佬指点一二。
最后祝大家在新的一年身体健康,平安无事!