查看: 3721|回复: 3

[LPC创新大赛] 求Chip_GPIO_PortSetState函数功能详解

[复制链接]

该用户从未签到

2

主题

5

帖子

0

新手上路

Rank: 1

积分
32
最后登录
2017-6-11
发表于 2017-5-20 21:50:51 | 显示全部楼层 |阅读模式
开发板:LPC824Lite
在修改官方提供的gpio_hands_on_1例程的时候发现Chip_GPIO_PortSetState(LPC_GPIO_PORT, 0, 1)无论给uint32_t value形参的值是0还是其他,都会使LPC824Lite的8个用户LED灯常亮,即输出低电平,除非把这条语句注释掉,请问有谁知道这是怎么回事吗?这个函数跟PIN寄存器是的关系又是什么?
gpio_8xx.h:
/**
* @brief Set all GPIO raw pin states (regardless of masking)
* @param pGPIO : The base of GPIO peripheral on the chip
* @param port : port Number (supports port 0 only)
* @param value : Value to set all GPIO pin states (0..n) to
* @return Nothing
*/
STATIC INLINE void Chip_GPIO_PortSetState(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)
{
pGPIO->PIN[port] = value;
}

回复

使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-5-21 00:14:45 | 显示全部楼层
    把你前后的代码都出来需要综合分析
    QQ截图20170521001318.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    32
    最后登录
    2017-6-11
     楼主| 发表于 2017-5-21 19:59:46 | 显示全部楼层
    技术范儿 发表于 2017-5-21 00:14
    把你前后的代码都出来需要综合分析

    非常感谢您的帮助,这是我在例程gpio_handson_1的C文件main_gpio_handson1.c的基础上稍微做的修改
    #include "board.h"

    #define LED1_PIN 7
    #define LED2_PIN 13
    #define LED3_PIN 16

    static void delay(void)
    {
            uint32_t i, j;
            for(i=0; i<1000; i++)
            for(j=0; j<1000; j++);
    }
    int main(void)
    {
                    uint32_t GPIOCONFIG1 = ( (1 << LED1_PIN) | (1 << LED2_PIN) | (1 << 27) );

                    SystemCoreClockUpdate();
                    Board_Init();
                   
                    /* Set port 0 pins 7,13,16 to the output direction*/
                    Chip_GPIO_PortSetDIR(LPC_GPIO_PORT, 0, GPIOCONFIG1, 1);

                    /* Set GPIO port mask value to make sure only port 0
                             pins 0-3 (0-1 on 824) are active during state change */
                      Chip_GPIO_PortSetState(LPC_GPIO_PORT, 0, 1);
                    /* All work happens in the systick interrupt handler */
                    while (1)
                            {
                            Chip_GPIO_PortSetOutLow(LPC_GPIO_PORT, 0, GPIOCONFIG1);
                            //Chip_GPIO_PortSetOutHigh(LPC_GPIO_PORT, 0, GPIOCONFIG1);       
                            }
    }
    发现如果不注释掉Chip_GPIO_PortSetState(LPC_GPIO_PORT, 0, 1);(无论最后一个参数赋值多少)则所有用户灯都会常亮,即至少所有用户灯端口都输出低电平
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    32
    最后登录
    2017-6-11
     楼主| 发表于 2017-5-23 21:24:39 | 显示全部楼层
    问题已解决,感谢大家
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-11 04:06 , Processed in 0.087862 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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