一、寄存器编程
寄存器编程只需要一个启动文件即可,说是寄存器编程,严格说来是采用地址编程
二、配置函数
- #include "led.h"
- void led_init(void)
- {
- /* GPIOE时钟使能*/
- (*((volatile unsigned int*)(0x40021000+0x18)))|=1<<6;
- /* PE10推挽输出,50Mhz*/
- (*((volatile unsigned int*)(0x40011800+0x04)))=0x00000300;
- /* PE10输出低电平,LED熄灭*/
- (*((volatile unsigned int*)(0x40011800+0x0c)))&=~(unsigned int)(1<<10);
- }
- void led_on(void)
- {
- /* PE10输出高电平,LED点亮*/
- (*((volatile unsigned int*)(0x40011800+0x0c)))|=(unsigned int)(1<<10);
- }
- void led_off(void)
- {
- /* PE10输出低电平,LED熄灭*/
- (*((volatile unsigned int*)(0x40011800+0x0c)))&=~(unsigned int)(1<<10);
- }
- /* 延时函数*/
- void delay(unsigned int n)
- {
- while(n--);
- }
三、主函数
- /*昆明电器科学研究所 张恩寿 2019年10月17日*/
- #include "led.h"
- int main(void)
- {
- led_init();
- while(1)
- {
- led_on();
- delay(600000);
- led_off();
- delay(600000);
- }
- }
四、结论
发现采用库函数编程存在一些冗余,采用地址编程简单明了
|