查看: 1202|回复: 0

【欲撼动51的NXP】编写自己的GPIO配置

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-6 08:48
  • 签到天数: 169 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-12-2 08:34:24 | 显示全部楼层 |阅读模式
    分享到:
    从官方的例程中了解到了GPIO的基本配置后,就可以自己写一个GPIO的工程了。
    在此之前,还要了解一下启动文件Keil_startup_LPC8xx.s
    找到以下的程序部分:

    可以看到在进入到main函数前,还调用了一个SystemInit的函数,这个函数就是一个系统初始化的函数,其定义在system_LPC8xx.c中。主要是对系统的时钟进行配置。
    回到我们自己的GPIO工程,其主要的就是GPIO时钟使能、输出输入配置、引脚控制了。其他的部分可以不考虑。
    从原理图中,可以看到连接到LED的引脚有三个,这里我们使用绿色的LED,即第16引脚。
    对应初始化函数为:
    void GPIOInit (void){    LPC_SYSCON->SYSAHBCLKCTRL |= ( 1<< 6);                                     LPC_SYSCON-&gtRESETCTRL &= ~(1<<10);LPC_SYSCON-&gtRESETCTRL |= (1<<10);}让LED闪烁起来,还要有一个延时函数,为是简单,这里就不使用定时器了。用for进行延时。
    void myDelay (uint32_t ulTime){    uint32_t i;        while (ulTime--) {        for (i = 0; i < 2401; i++);    }}而Config_LEDs函数就直接调用就可以了。
    最后的程序:
    #include "LPC8xx.h"#include <stdio.h>#include "lpc8xx_gpio.h"#include "lpc8xx_syscon.h"#include "utilities.h"void myDelay (uint32_t ulTime){    uint32_t i;        while (ulTime--) {        for (i = 0; i < 2401; i++);    }}int main(void) {  uint32_t temp;  GPIOInit();  Config_LEDs(RED | BLUE | GREEN);  while (1) {                                LEDs_On(GREEN);                myDelay(500);        LEDs_Off(GREEN);        myDelay(500);  }}
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 17:19 , Processed in 0.126142 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.