打印
[Kinetis]

MKE04Z128的GPIO口输出高低电平时会不会受中断的影响???!

[复制链接]
686|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
何子|  楼主 | 2017-8-6 09:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近在调MKE04Z128的485通信,IO口及UART设置如下:
1.使用UAR1进行通信,选择引脚PTF2、PF3;
   485片选脚SDA输出口:PTE4
   UART中断发送,中断接收。

2.LCD显示屏的DB口选用PTG0-PG7
   PTE4与PTG0-7共用一个GPIOB口设置

当UART1发送较长的数据串时,通信一段时间后,会出现片选脚SDA被莫名的置高电平。
通信正常与异常的波形详见图片。





调试BUG时,发现SDA被拉高的情况都出现在LCD显示屏的DB口写数据时。

★以下是LCD数据口写的程序段
/****************************************/
//宏定义   LCD数据IO口宏定义                                 
#define  LCD_DATA_GPIO             GPIOB_BASE_PTR  //PTD0-7
#define  LCD_DATA_IO               0x00FF0000
#define  LCD_DATA_SHIFT                           16


//全部作为数据输出口
#define  LCD_DATA_DDRB_OUTPUT      (GPIO_PDDR_REG(LCD_DATA_GPIO) |= LCD_DATA_IO)  
//设置输出口为x  
#define  LCD_DATA_WRITE(x)         ( GPIO_PDOR_REG(LCD_DATA_GPIO) &= (~LCD_DATA_IO),
                                                           GPIO_PDOR_REG(LCD_DATA_GPIO) |= ((uint32_t)((x)<<(LCD_DATA_SHIFT))))   


void LCD_WriteCom(uint8_t ucCommand)//写LCD数据口
{
    if( g_ucLCD_CS == 'A' )                //片选设置为"01",选择左边
        {
            LCD_CSA_LOW;    // LCD_CSA = 0;                  
            LCD_CSB_HIGH;   //  LCD_CSB = 1;       
        }
        else if( g_ucLCD_CS == 'B' )        //片选设置为"10",选择右边
        {
                LCD_CSA_HIGH;   //LCD_CSA = 1;
                LCD_CSB_LOW;    // LCD_CSB = 0;
        }

          LCD_Busy();                                    //判断LCD是否是"BUSY"                 //03.10 应对3C暂时屏蔽
         
          LCD_WriteCom_Init();                    //写命令初始化,在LCD_DI=0,LCD_E下降沿下,写入指令码
         
          LCD_DATA_WRITE(ucCommand);

          LCD_E_LOW;                      // LCD_E = 0;                //下降沿
}

/*****************************************/

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

32

帖子

1

粉丝