查看: 3082|回复: 4

[已解决] MKE06Z uart初始化

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
23
最后登录
2018-3-17
发表于 2018-3-15 11:20:57 | 显示全部楼层 |阅读模式
最近在使用MKE06Z,按例程进行uart初始化时,UART寄存器值总为0,初始化不成功,而同一工程中ADC、定时器、can等寄存器值均可设置,求高手指点!代码如下:
void uart_init(void)
{
   UART_ConfigType sConfig = {0};

    sConfig.u32SysClkHz = 20970000;

    sConfig.u32Baudrate = 9600;
    sConfig.sSettings.b9bitModeEn = 0;
    sConfig.sSettings.bParityEn = 0;
    UARTx_Init(UART0, &sConfig);
}

void UARTx_Init(UART_Type *pUART, UART_ConfigType *pConfig)
{
    uint16_t u16Sbr;
    uint8_t u8Temp;
    uint32_t u32SysClk = pConfig->u32SysClkHz;
    uint32_t u32Baud = pConfig->u32Baudrate;
    uint8_t b9bitModeEn = pConfig->sSettings.b9bitModeEn;
    uint8_t bParityEn = pConfig->sSettings.bParityEn;
    uint8_t bParityType = pConfig->sSettings.bParityType;
    /* Sanity check */
    ASSERT((pUART == UART0) || (pUART == UART1) || (pUART == UART2));
  
/* Enable the clock to the selected UART */   
    if (pUART == UART0)
    {
        SIM->SCGC |= SIM_SCGC_UART0_MASK;
    }
#if defined(CPU_KE02)  | defined(CPU_KE06)
    else if (pUART == UART1)
    {
        SIM->SCGC |= SIM_SCGC_UART1_MASK;
    }
    else
    {
        SIM->SCGC |= SIM_SCGC_UART2_MASK;
    }
#endif   
    /* Make sure that the transmitter and receiver are disabled while we
     * change settings.
     */
    pUART->C2 &= ~(UART_C2_TE_MASK | UART_C2_RE_MASK );
   
    /* Configure the UART for 8-bit mode, no parity */
    pUART->C1 = 0;
    //8-bit mode config
    if (b9bitModeEn)
    {
        //if not the default 8-bit mode, then enable 9-bit mode
        pUART->C1 |= UART_C1_M_MASK;
    }
    //parity check config
    if (bParityEn)
    {
        pUART->C1 |= UART_C1_PE_MASK;
        if (bParityType)
        {
            //if not defult even parity type, enable odd parity type
            pUART->C1 |= UART_C1_PT_MASK;
        }
    }
   
    /* Calculate baud settings */
    u16Sbr = (((u32SysClk)>>4) + (u32Baud>>1))/u32Baud;
   
    /* Save off the current value of the UARTx_BDH except for the SBR field */
    u8Temp = pUART->BDH & ~(UART_BDH_SBR_MASK);
   
    pUART->BDH = u8Temp |  UART_BDH_SBR(u16Sbr >> 8);
    pUART->BDL = (uint8_t)(u16Sbr & UART_BDL_SBR_MASK);
    /* Enable receiver and transmitter */
    pUART->C2 |= (UART_C2_TE_MASK | UART_C2_RE_MASK );
}

最佳答案

如果能收发就是正常的,那就IDE的问题,换IDE
回复

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2018-3-15 14:36:55 | 显示全部楼层
    KE06Z默认使用串口1,你使用自制板子还是什么,不能发送接收吗
    开心
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    2018-3-17
     楼主| 发表于 2018-3-15 16:56:12 | 显示全部楼层
    自制板子。
    现在不是能不能收发的问题,而是初始化不成功,初始化后,通过系统窗口,观察UART寄存器的值,均为0,不变。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    2018-3-17
     楼主| 发表于 2018-3-15 16:57:16 | 显示全部楼层
    改用UART1也是一样的结果
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2018-3-15 17:32:17 | 显示全部楼层
    如果能收发就是正常的,那就IDE的问题,换IDE
    开心
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-8 08:43 , Processed in 0.124140 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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