关于GD32F103寄存器(地址)编程,及模板

[复制链接]
1303|8
手机看帖
扫描二维码
随时随地手机跟帖
zeshoufx|  楼主 | 2019-10-18 11:10 | 显示全部楼层 |阅读模式
一、寄存器编程
寄存器编程只需要一个启动文件即可,说是寄存器编程,严格说来是采用地址编程
二、配置函数
#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);
        }
}



四、结论
发现采用库函数编程存在一些冗余,采用地址编程简单明了

1-led.zip

55.59 KB

地址编程模板

使用特权

评论回复
评论
34af9uc 2023-10-30 19:36 回复TA
你这个程序在你那能跑软件仿真吗?我这仿真提示无法读写 
gwsan| | 2019-11-12 13:28 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
kxsi| | 2019-11-12 14:00 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
wowu| | 2019-11-12 14:09 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
nawu| | 2019-11-12 14:52 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
qcliu| | 2019-11-12 15:17 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
34af9uc| | 2023-10-23 19:32 | 显示全部楼层
int main(void)
{
while(1);
       
}
竟然这么写

使用特权

评论回复
zeshoufx|  楼主 | 2023-10-24 09:38 | 显示全部楼层
34af9uc 发表于 2023-10-23 19:32
int main(void)
{
while(1);

这个是单片机开发的一般框架

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

1947

帖子

14

粉丝