一、寄存器编程
寄存器编程只需要一个启动文件即可,说是寄存器编程,严格说来是采用地址编程
二、配置函数
#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);
}
}
四、结论
发现采用库函数编程存在一些冗余,采用地址编程简单明了
|
你这个程序在你那能跑软件仿真吗?我这仿真提示无法读写