OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2328|回复: 1

关于keil写程序

[复制链接]

19

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2018-6-22
在线时间
21 小时
发表于 2018-7-24 17:40:51 | 显示全部楼层 |阅读模式
这个是一个跑马灯的实验,为什么不能用最上面这种方式写,而要用库函数或寄存器写,要用库函数写的话我岂不是要知道所有的库函数才能写程序吗,而且好像写不同的程序要用不同的源文件,可我怎么知道用哪些源文件,
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

/************************************************
ALIENTEK精英STM32开发板实验1
跑马灯实验
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/
int main(void)
{       
        delay_init();            //延时函数初始化          
        LED_Init();                          //初始化与LED连接的硬件接口
        while(1)
        {
                LED0=0;
                LED1=1;
                delay_ms(300);         //延时300ms
                LED0=1;
                LED1=0;
                delay_ms(300);        //延时300ms
        }
}


/**
*****************下面注视的代码是通过调用库函数来实现IO控制的方法*****************************************
int main(void)
{

        delay_init();                  //初始化延时函数
        LED_Init();                        //初始化LED端口
        while(1)
        {
                        GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //LED0对应引脚GPIOB.5拉低,亮  等同LED0=0;
                        GPIO_SetBits(GPIOE,GPIO_Pin_5);   //LED1对应引脚GPIOE.5拉高,灭 等同LED1=1;
                        delay_ms(300);                     //延时300ms
                        GPIO_SetBits(GPIOB,GPIO_Pin_5);           //LED0对应引脚GPIOB.5拉高,灭  等同LED0=1;
                        GPIO_ResetBits(GPIOE,GPIO_Pin_5); //LED1对应引脚GPIOE.5拉低,亮 等同LED1=0;
                        delay_ms(300);                     //延时300ms
        }
}

****************************************************************************************************
***/


       
/**
*******************下面注释掉的代码是通过 直接操作寄存器 方式实现IO口控制**************************************
int main(void)
{

        delay_init();                  //初始化延时函数
        LED_Init();                        //初始化LED端口
        while(1)
        {
     GPIOB->BRR=GPIO_Pin_5;//LED0亮
           GPIOE->BSRR=GPIO_Pin_5;//LED1灭
                 delay_ms(300);
     GPIOB->BSRR=GPIO_Pin_5;//LED0灭
           GPIOE->BRR=GPIO_Pin_5;//LED1亮
                 delay_ms(300);

         }
}
**************************************************************************************************
**/


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4521
金钱
4521
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-24 22:43:37 | 显示全部楼层
可以啊,
但是必须有人替你事先实现好了LED0=0; 就是控制灯亮灯灭二者之间的关系。
直接与硬件打交道的人做的就是这项工作,
要么直接操作寄存器,要么借助库函数。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 17:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表