[资料] 【分享】一次“习惯”造成的错误
549 查看
0 回复
 楼主 | 发布于 2020-09-18 | 只看楼主
分享到:
一次“习惯”造成的错误
Ø错误描述
        客户通过LPCXpresso4367开发板进行项目开发前的学习,实现一个特简单的功能:P1.5输出低电平,使用的是LPCOpen软件包提供的函数,调用的函数代码如下,但结果是P1.5始终保持高电平。
  Chip_SCU_PinMuxSet(0x1, 5, (SCU_MODE_FUNC0)); //P1.5 引脚设为GPIO功能
  Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 0x1,  5);//P1.5 GPIO设为输出
  Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0x1,  5,  false);// P1.5 GPIO输出低电平
  
Ø错误分析
        咋看代码,函数调用和参数选择都没有任何差错,但在仔细对照参考手册后,发现了错误的原因,下图为LPC43xx各个引脚所支持的复用功能,而图2显示的是K64的各个引脚所支持的复用功能,对比会发现两者对于GPIO的名称定义方式不同,在K64中,PTA,PTB,PTC等代表着GPIO功能引脚的名称,所以GPIO寄存器的名称也与PTA,PTB,PTC等相呼应,如图3所示。
 1
2
 3
         但在LPC43xx中却不同,P1.5为引脚的名称,而GPIOn[m]是作为GPIO功能的引脚的名称(如图4所示),两者有着独立的寄存器。
4

       所以正确的代码应如下所示:
  Chip_SCU_PinMuxSet(0x1, 5, (SCU_MODE_FUNC0)); //P1.5 引脚设为GPIO功能
  Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 0x1, 8);//P1.5 GPIO设为输出
  
Chip_GPIO_SetPinState(LPC_GPIO_PORT,  0x1, 8, false);// P1.5  GPIO输出低电平

本帖有更多资源,需 登录 才可以下载,没有帐号?立即 注册

(0 ) (0 )
回复 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部