查看: 9475|回复: 6

[S32] 用S32DS创建hello例子工程,按键输入只能是PORTC端口的引脚

[复制链接]

该用户从未签到

1

主题

9

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2019-6-16
发表于 2017-4-10 09:03:58 | 显示全部楼层 |阅读模式
我是一个S32K144的初学者,用S32DS创建hello例子工程,按键输入只能是PORTC端口的引脚,更换成PORTB端口的引脚就不行,更换为PORTD也不行,同样的工程,只是更改到其它端口的引脚上。希望高手指点,最好贴出代码,先行谢过!
我知道答案 目前已有6人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24875
最后登录
2025-7-18
发表于 2017-4-10 11:09:25 | 显示全部楼层
楼主你好!
可以直接用代码初始化相关的引脚,然后控制相关引脚即可。
关于代码,你可以参考S32DS安装目录下的代码:
C:\Freescale\S32_ARM_v1.2\S32DS\S32_SDK_EAR_0.8.1\examples\demo_apps\blinking_LED\GCC-S32DS
C:\Freescale\S32_ARM_v1.2\S32DS\Examples\S32K144\hello\src
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

9

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2019-6-16
 楼主| 发表于 2017-4-10 15:32:02 | 显示全部楼层
本帖最后由 lijian758-1240313 于 2017-4-11 08:05 编辑

把AN5413SW里面的hello工程里的hello.c定义的蓝色LED输出端口PTD0改为PTE8是可以的,但是把SW2按键输入端口PTC12改为PTD15就不行,改为PTB2或者PTB3也不行,但是只要改回到PORTC的端口上就行,不知为什么?
下面的代码是我把按键改到PTD15,蓝色LED改到PTE8的代码:
/*
* hello.c              Copyright NXP 2016
* Description:  Simple program to exercise GPIO
* 2015 Mar 31 S Mihalik/ O Romero - initial version
*
*/

#include "S32K144.h"    /* include peripheral declarations S32K144 */

#define PTE8  8         /* Port PTE8, bit 8: FRDM EVB output to blue LED */
#define PTD15 15        /* Port PTD15, bit 15: FRDM EVB input from BTN0 [SW2] */


void WDOG_disable (void){
  WDOG->CNT=0xD928C520;    /*Unlock watchdog*/
  WDOG->TOVAL=0x0000FFFF;  /*Maximum timeout value*/
  WDOG->CS = 0x00002100;   /*Disable watchdog*/
}

int main(void) {
  int counter = 0;
  WDOG_disable();             /* Disable Watchdog in case it is not done in startup code */
                              /* Enable clocks to peripherals (PORT modules) */
  PCC-> PCCn[PCC_PORTD_INDEX] = PCC_PCCn_CGC_MASK; /* Enable clock to PORT D */
  PCC-> PCCn[PCC_PORTE_INDEX] = PCC_PCCn_CGC_MASK; /* Enable clock to PORT E */
                               /* Configure port D15 as GPIO input (BTN 0 [SW2] on EVB) */
  PTD->PDDR &= ~(1<<PTD15);    /* Port D15: Data Direction= input */
  PORTD->PCR[15] = 0x00000112; /* Port D15: MUX = GPIO, input filter enabled,pulldown enable */
                               /* Configure port E8 as GPIO output (LED on EVB) */
  PTE->PDDR |= 1<<PTE8;        /* Port E8: Data Direction= output */
  PORTE->PCR[8] = 0x00000100;  /* Port E8: MUX = GPIO */

  for(;;) {
    if (PTD->PDIR & (1<<PTD15)) {   /* If Pad Data Input = 1 (BTN0 [SW2] pushed) */
      PTE-> PSOR |= 1<<PTE8;        /* Set Output on port D0 (LED on) */
    }
    else {                          /* If BTN0 was not pushed */
      PTE-> PCOR |= 1<<PTE8;        /* Clear Output on port E8 (LED off) */
    }
    counter++;
  }
}
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

9

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2019-6-16
 楼主| 发表于 2017-4-10 15:39:56 | 显示全部楼层
看手册应该是PORTD端口中断没有配置导致读按键值(PDIR)始终为零,但是不知道怎样配置,还有就是为什么PORTC端口同样没有配置中断却能读出按键值?
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

9

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2019-6-16
 楼主| 发表于 2017-4-11 16:46:44 | 显示全部楼层
有没有人碰到和我一样的问题?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24875
最后登录
2025-7-18
发表于 2017-4-12 10:34:12 | 显示全部楼层
lijian758-12403 发表于 2017-4-10 15:39
看手册应该是PORTD端口中断没有配置导致读按键值(PDIR)始终为零,但是不知道怎样配置,还有就是为什么POR ...

你好!
首先,确保你的代码中,没有把PTD15配置为其他的功能。
另外,把这两句话倒一下顺序:
  PTD->PDDR &= ~(1<<PTD15);    /* Port D15: Data Direction= input */
   PORTD->PCR[15] = 0x00000112; /* Port D15: MUX = GPIO, input filter enabled,pulldown enable */
修改为:
  
   PORTD->PCR[15] = 0x00000112; /* Port D15: MUX = GPIO, input filter enabled,pulldown enable */
PTD->PDDR &= ~(1<<PTD15);    /* Port D15: Data Direction= input */
并且,仿真看下,PTD15的mux寄存器是不是1,也就是GPIO功能,然后再看下GPIO方向是不是输入。
测试,外部一直输入低,看看代码仿真是不是接收到低,输出为高,就一直为高。
是否配置中断和读取值是无关的,你就先用查询法测试。
因为我这边没有S32K的板子,所以无法帮你测试,只有教你方法。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

9

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2019-6-16
 楼主| 发表于 2017-4-14 08:22:10 | 显示全部楼层
谢谢小恩GG,按你的方法还是不行,不知为什么。仿真看PTD15的mux寄存器是1,方向也是输入,可就是PDIR寄存器一直为零,无论外部是高电平还是低电平,同样的语句换成PORTC数据寄存器PDIR就会随着外部电平改变,难道是我的开发板不是官方的缘故?(开发板是蓝宙的那个开发板)
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-20 08:41 , Processed in 0.097186 second(s), 27 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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