study_hardware 发表于 2014-4-22 10:34:22

lpc4357 gpio 的配置的问题 和stm32比较下

首先先初始化        /* Enable clock and init GPIO outputs */
LPC_CCU1->CLK_M4_GPIO_CFG= CCU_CLK_CFG_AUTO | CCU_CLK_CFG_RUN;                //使能整个gpio总线 不像stm32 adc 每个bank都设置一下
CCU_CLK_CFG_AUTO 先把自动使能打开,,好像可以自动打开总线和关闭,但是关闭前要先禁止ahb中线 ,跟功耗有关的东西还没有搞清楚。
CCU_CLK_CFG_RUN这个就是使能了 跟32cmd一样。
while (!(LPC_CCU1->CLK_M4_GPIO_STAT & CCU_CLK_STAT_RUN));                                                //还要查看状态位 看下有没有使能

------------------------------------------时钟结束
LPC_SCU->SFSPD_10=4;            /* GPIO6                        */
LPC_SCU->SFSPD_11=4;            /* GPIO6                        */
LPC_SCU->SFSPD_12=4;            /* GPIO6                        */
LPC_SCU->SFSPD_13=4;            /* GPIO6                        */
LPC_SCU->SFSPD_14=4;            /* GPIO6                        */

因为它的gpio功能很强大,每一个GPIO最多有8个功能,所以它专门开辟一个寄存器scu来配置这个东西。相当于32里面的一个端口可以好多的复用功能。ps:好像lpc好像没有固件库 看起来很蛋疼。。。
-----------------------------------------功能选择结束

LPC_GPIO_PORT->DIR |= (led_mask | led_mask | led_mask |
                            led_mask);// | led_mask)
设置io的输入还是输出。问题就在这了。
const uint32_t led_mask[] = { 1UL << 28,                       
                              1UL << 27,
                              1UL << 26,
                              1UL << 25,
                              1UL << 24};
问题:这个真心搞不懂1ul是什么东西DIR和24到28这些数字是怎么对应到D10到D14这些端口的。

欢迎拍砖

error_dan 发表于 2014-4-22 10:46:00

UL是C标准数据类型后缀,相当于unsigned long,也就是32bit的一个1,然后左移X位,然后一个寄存器所有需要置1的位都用这种方式写出来并且通过与运算合成一个立即数。
这种写法我当年上大学学ARM9的时候也写的很头疼。
具体的每个寄存器干嘛的,每个位干嘛的还是要去看RM。
STM32好用是因为他的库是CMSIS标准的,采用结构体映射内存空间的方式构造的。你要是不用他的库,写到最后也是一样的德行。
LPC也有标准的CMSIS头文件,要找而已。而且确实写的比较蛋疼。

tiger5 发表于 2014-4-22 10:57:51

问题:这个真心搞不懂1ul是什么东西DIR和24到28这些数字是怎么对应到D10到D14这些端口的。

UL有时候是为了屏蔽编译报错。

xi_liang 发表于 2014-4-22 11:11:51

为什么是1UL,不是1,因为最高位是1可能是负数

amwox 发表于 2014-4-22 11:21:39

1UL -- (unsigned long)1

study_hardware 发表于 2014-4-22 12:31:01

error_dan 发表于 2014-4-22 10:46
UL是C标准数据类型后缀,相当于unsigned long,也就是32bit的一个1,然后左移X位,然后一个寄存器所有需要 ...

lpc好像就只有rm没有像stm32那样有datasheet 和固件库函数的说明的文档吗?
官方的.c的例程有没有啊?我在官网怎么没有找到?

study_hardware 发表于 2014-4-22 12:33:00

amwox 发表于 2014-4-22 11:21
1UL -- (unsigned long)1

哦谢谢你的回答
但是我怎么定位不到 它在哪定义的啊?

hex2dec 发表于 2014-4-23 17:51:29

楼主,请问你使用LPC4357使用的是NXP提供的库吗?还是直接操作寄存器了

magicoe 发表于 2014-4-23 18:04:24

要库的话去这个链接http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43xx-packages,也提供了库的说明,需要另外下载。我还是直接操作寄存器{:smile:}

study_hardware 发表于 2014-4-23 18:05:08

hex2dec 发表于 2014-4-23 17:51
楼主,请问你使用LPC4357使用的是NXP提供的库吗?还是直接操作寄存器了

提供的库??在哪找的??

magicoe 发表于 2014-4-23 18:10:49

study_hardware 发表于 2014-4-22 12:33
哦谢谢你的回答
但是我怎么定位不到 它在哪定义的啊?

这个应该是编译器自己识别的

study_hardware 发表于 2014-4-23 18:12:27

magicoe 发表于 2014-4-23 18:04
要库的话去这个链接http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43 ...

谢谢啦感觉挺全的 好像都是例程 感谢啊很有参考价值啊
页: [1]
查看完整版本: lpc4357 gpio 的配置的问题 和stm32比较下