搜索
bottom↓
回复: 11

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

[复制链接]

出0入0汤圆

发表于 2014-4-22 10:34:22 | 显示全部楼层 |阅读模式
首先先初始化
  1.   /* Enable clock and init GPIO outputs */
  2.   LPC_CCU1->CLK_M4_GPIO_CFG  = CCU_CLK_CFG_AUTO | CCU_CLK_CFG_RUN;                //使能整个gpio总线 不像stm32 adc 每个bank都设置一下
  3. CCU_CLK_CFG_AUTO 先把自动使能打开,,好像可以自动打开总线和关闭,但是关闭前要先禁止ahb中线 ,跟功耗有关的东西还没有搞清楚。
  4. CCU_CLK_CFG_RUN这个就是使能了 跟32cmd一样。
  5.   while (!(LPC_CCU1->CLK_M4_GPIO_STAT & CCU_CLK_STAT_RUN));                                                //还要查看状态位 看下有没有使能

  6. ------------------------------------------时钟结束
  7. [code]  LPC_SCU->SFSPD_10  =  4;              /* GPIO6[24]                          */
  8.   LPC_SCU->SFSPD_11  =  4;              /* GPIO6[25]                          */
  9.   LPC_SCU->SFSPD_12  =  4;              /* GPIO6[26]                          */
  10.   LPC_SCU->SFSPD_13  =  4;              /* GPIO6[27]                          */
  11.   LPC_SCU->SFSPD_14  =  4;              /* GPIO6[28]                          */
复制代码


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

  1.   LPC_GPIO_PORT->DIR[6] |= (led_mask[0] | led_mask[1] | led_mask[2] |
  2.                             led_mask[3]);// | led_mask[4])
复制代码

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

欢迎拍砖

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

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

出0入0汤圆

发表于 2014-4-22 10:57:51 | 显示全部楼层
问题:这个真心搞不懂1ul是什么东西  DIR[6]和24到28这些数字是怎么对应到D10到D14这些端口的。

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

出0入0汤圆

发表于 2014-4-22 11:11:51 | 显示全部楼层
为什么是1UL,不是1,因为最高位是1可能是负数

出0入0汤圆

发表于 2014-4-22 11:21:39 | 显示全部楼层
1UL -- (unsigned long)1

出0入0汤圆

 楼主| 发表于 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的例程有没有啊?我在官网怎么没有找到?

出0入0汤圆

 楼主| 发表于 2014-4-22 12:33:00 | 显示全部楼层
amwox 发表于 2014-4-22 11:21
1UL -- (unsigned long)1

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

出0入0汤圆

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

出0入0汤圆

发表于 2014-4-23 18:04:24 | 显示全部楼层
要库的话去这个链接http://www.lpcware.com/content/n ... rm-lpc43xx-packages,也提供了库的说明,需要另外下载。我还是直接操作寄存器

出0入0汤圆

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

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

出0入0汤圆

发表于 2014-4-23 18:10:49 | 显示全部楼层
study_hardware 发表于 2014-4-22 12:33
哦  谢谢你的回答
但是我怎么定位不到 它在哪定义的啊?

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

出0入0汤圆

 楼主| 发表于 2014-4-23 18:12:27 | 显示全部楼层
magicoe 发表于 2014-4-23 18:04
要库的话去这个链接http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43 ...

谢谢啦  感觉挺全的 好像都是例程 感谢啊  很有参考价值啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 09:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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