【Cypress FM4 EVK 开发板试用体验】+ GPIO操作

  • apleilx
  • LV5工程师
  • |      2016-12-03 13:15:54
  • 浏览量 848
  • 回复:2
本帖最后由 apleilx 于 2016-12-5 15:54 编辑 FM4的管脚配置和 ST、NXP的芯片用法差别还是很大的,库文件超级大,编译速度都慢了不少,不过还好有管脚配置工具。 这两天看了看官方提供的外设库,一开始很不适应,外设定义的十分复杂,后来才发现这么做是为了用位带映射,这个用着有点象PIC的外设定义方法,这样的好处是外设操作效率提高了不少。 管脚配置器生成的代码:(通用IO部分) /** ***************************************************************************** ** \brief This function initializes GPIO ** *****************************************************************************/ static void Iomux_GPIO_Init(void) { // Init GPIO pin function Gpio1pin_InitIn( GPIO1PIN_P1D, Gpio1pin_InitPullup( 1u ) ); Gpio1pin_InitIn( GPIO1PIN_P20, Gpio1pin_InitPullup( 0u ) ); Gpio1pin_InitOut( GPIO1PIN_PB2, Gpio1pin_InitVal( 1u ) ); Gpio1pin_InitOut( GPIO1PIN_P18, Gpio1pin_InitVal( 1u ) ); Gpio1pin_InitOut( GPIO1PIN_P1A, Gpio1pin_InitVal( 1u ) ); } 头文件提供了管脚控制寄存器的位带别名定义,我们直接操作位带区就可以。 重定义下: #define LED_GREEN bFM_GPIO_PDORB_P2 #define LED_BLUE bFM_GPIO_PDOR1_P8 #define LED_RED bFM_GPIO_PDOR1_PA 然后按照下面代码可以控制指示灯闪烁: if(bPulse_3s) { if(LED_BLUE) LED_BLUE = 0; else LED_BLUE = 1; } if(bPulse_10s) { if(LED_GREEN) LED_GREEN = 0; else LED_GREEN = 1; } if(bPulse_30s) { if(LED_RED) LED_RED = 0; else LED_RED = 1; }
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
chunyang 2016-12-05
这个是实现什么功能的?
0   回复
举报
发布
apleilx 回复 2016-12-05
三色灯闪烁,动作间隔分别是3s/10s/30s
0   回复
举报
x
收藏成功!点击 我的收藏 查看收藏的全部帖子