查看: 3393|回复: 7

[求助] 飞思卡尔MKE02Z4 只能接收数据不能发送数据?

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2015-12-16
发表于 2015-12-15 18:05:17 | 显示全部楼层 |阅读模式
请教前辈们:我用飞思卡尔MKE02Z32VLC4  做串口通信时,用UART0  UART1  与电脑 串口调试助手通信 都可以正常接收,但是都发送不了数据,不知道为什么??串口线上外部上拉电阻10K,请前辈们赐教,下面是配置代码
串口初始化函数:void UARTx_INIT(unsigned char channel,unsigned int baud,unsigned long busclk)
调用  串口0和1都是波特率9600 总线时钟4MHZ
UARTx_INIT(0,9600,4000000);
UARTx_INIT(1,9600,4000000);
发送数据语句: 蜂鸣器会响 数据发不走
if((UART0->S1) & UART_S1_TDRE_MASK)
{               
        BUZZ_ON;
        UART0->D=0X55;
}

void UARTx_INIT(unsigned char channel,unsigned int baud,unsigned long busclk)
{
    register unsigned  int sbr;    //定义一个优先存储在寄存器中的整形数据,用来计算波特率
    unsigned char temp;            //定义一个临时存储波特率的数据
    /*设置UART0*/
    if(channel==0)
    {
        /*1--打开UART0时钟*/
        SIM->SCGC |= SIM_SCGC_UART0_MASK;
        /*2--操作UART0之前先关闭UART0的发送和接收模块功能*/
        UART0->C2 &= ~(UART_C2_RE_MASK | UART_C2_TE_MASK);
        /**********************
        3--
        设置UART0_C1
        设置8位数据 1位停止位 无检验
        ***********************/
        UART0->C1 = 0;
        /*4--设置波特率baud*/
        sbr=(unsigned int)(busclk/16/baud);             //计算波特率 并转化为整形数据
        temp=UART0->BDH & ~(UART_BDH_SBR(0x1F));        //取出UART0->BDH的值并且清零低5位,高三位不动,低5位用来设置波特率的高位,并保存在temp中
        UART0->BDH = temp |  UART_BDH_SBR(((sbr & 0x1F00) >> 8));//取出波特率sbr中的高5位,并存储在UART0->BDH中的低5位中
        UART0->BDL = (unsigned char)(sbr & UART_BDL_SBR_MASK);   //把sbr这个16位波特率强制转化为8位,舍弃高位,只保留低8位,存储在UART0->BDL中
        /**********************
        5--
        设置UART0_C2
        接收中断开启RIE=1
        发送中断禁止TIE=0
        开启发送模块TE=1
        开启接收模块RE=1
        ***********************/
        UART0->C2 |= UART_C2_RE_MASK | UART_C2_TE_MASK;     //UART0发送模块接收模块打开
        UART0->C2 |= UART_C2_TE_MASK;
        //UART0->C2 |= UART_C2_RIE_MASK;                    //接收中断打开
        /*6--开启UART0通道中断*/
        //NVIC_EnableIRQ(UART0_IRQn);
    }
        /*设置UART0*/
    if(channel==1)
    {
        /*1--打开UART1时钟*/
        SIM->SCGC |= SIM_SCGC_UART1_MASK;
        /*2--操作UART0之前先关闭UART1的发送和接收模块功能*/
        UART1->C2 &= ~(UART_C2_RE_MASK | UART_C2_TE_MASK);
        /**********************
        3--
        设置UART1_C1
        设置8位数据 1位停止位 无检验
        ***********************/
        UART1->C1 = 0;
        /*4--设置波特率baud*/
        sbr=(unsigned int)(busclk/16/baud);             //计算波特率 并转化为整形数据
        temp=UART1->BDH & ~(UART_BDH_SBR(0x1F));        //取出UART1->BDH的值并且清零低5位,高三位不动,低5位用来设置波特率的高位,并保存在temp中
        UART1->BDH = temp |  UART_BDH_SBR(((sbr & 0x1F00) >> 8));//取出波特率sbr中的高5位,并存储在UART1->BDH中的低5位中
        UART1->BDL = (unsigned char)(sbr & UART_BDL_SBR_MASK);   //把sbr这个16位波特率强制转化为8位,舍弃高位,只保留低8位,存储在UART1->BDL中
        /**********************
        5--
        设置UART1_C2
        接收中断开启RIE=1
        发送中断禁止TIE=0
        开启发送模块TE=1
        开启接收模块RE=1
        ***********************/
        UART1->C2 |= UART_C2_RE_MASK | UART_C2_TE_MASK;     //UART1发送模块接收模块打开
        //UART1->C2 |= UART_C2_RIE_MASK;                      //接收中断打开
        /*6--开启UART1通道中断*/
        //NVIC_EnableIRQ(UART1_IRQn);
    }
        /*设置UART2*/
    if(channel==2)
    {
        /*1--打开UART2时钟*/
        SIM->SCGC |= SIM_SCGC_UART2_MASK;
        /*2--操作UART0之前先关闭UART2的发送和接收模块功能*/
        UART2->C2 &= ~(UART_C2_RE_MASK | UART_C2_TE_MASK);
        /**********************
        3--
        设置UART2_C1
        设置8位数据 1位停止位 无检验
        ***********************/
        UART2->C1 = 0;
        /*4--设置波特率baud*/
        sbr=(unsigned int)(busclk/16/baud);             //计算波特率 并转化为整形数据
        temp=UART2->BDH & ~(UART_BDH_SBR(0x1F));        //取出UART2->BDH的值并且清零低5位,高三位不动,低5位用来设置波特率的高位,并保存在temp中
        UART2->BDH = temp |  UART_BDH_SBR(((sbr & 0x1F00) >> 8));//取出波特率sbr中的高5位,并存储在UART2->BDH中的低5位中
        UART2->BDL = (unsigned char)(sbr & UART_BDL_SBR_MASK);   //把sbr这个16位波特率强制转化为8位,舍弃高位,只保留低8位,存储在UART2->BDL中
        /**********************
        5--
        设置UART0_C2
        接收中断开启RIE=1
        发送中断禁止TIE=0
        开启发送模块TE=1
        开启接收模块RE=1
        ***********************/
        UART2->C2 |= UART_C2_RE_MASK | UART_C2_TE_MASK;     //UART2发送模块接收模块打开
        //UART2->C2 |= UART_C2_RIE_MASK;                    //接收中断打开
        /*6--开启UART2通道中断*/
        //NVIC_EnableIRQ(UART2_IRQn);
    }
}

我知道答案 目前已有7人回答
回复

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2015-12-16
 楼主| 发表于 2015-12-15 18:06:13 | 显示全部楼层
求解答。在线等等等……
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
    发表于 2015-12-15 18:42:45 | 显示全部楼层
    是否让它工作于单工模式?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-12-15 19:02:15 | 显示全部楼层
    学习一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-12-16 10:12:19 | 显示全部楼层
    楼主你好!
    你用官方的代码试下是否可以,官方代码下载链接:
    http://www.nxp.com/webapp/sps/do ... nt_pageType=product

    下载后使用KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\build\iar\ke02\platinum
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2015-12-16 15:46:17 | 显示全部楼层
    开漏输出引脚才需要外部上拉电阻吧?
    请问你用的是什么开发板,是否能给个具体型号?还是自己设计的板子?
    UART0\1是能够正常接收还是正常发送?没明白到底是uart正常接收还是串口调试助手正常接收。
    KE02 40MHz 总线时钟用的外部晶振还是内部慢速时钟?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    12
    最后登录
    2016-10-28
    发表于 2016-10-27 16:25:51 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2015-12-16 10:12
    楼主你好!
    你用官方的代码试下是否可以,官方代码下载链接:
    http://www.nxp.com/webapp/sps/download/lic ...

    ..\..\..\cw\ke02\platinum\Project_Headers\core_cmFunc.h(66): error:  #1114: this feature not supported on target architecture/processor
    提示不能在  不允许在Thumb模式使用嵌入汇编
    改成ARM模式还是一样的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2021-1-9 21:21
  • 签到天数: 56 天

    连续签到: 1 天

    [LV.5]常住居民I

    52

    主题

    677

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    1470
    最后登录
    2021-1-9
    发表于 2016-10-28 00:09:02 | 显示全部楼层
    不应该上拉
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 14:49 , Processed in 0.105745 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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