请选择 进入手机版 | 继续访问电脑版
查看: 201|回复: 0

[求助] MKE04z128官网例程跑不起来

[复制链接]
  • TA的每日心情

    2025-1-6 08:25
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    1

    主题

    3

    帖子

    0

    注册会员

    Rank: 2

    积分
    112
    最后登录
    2025-2-19
    发表于 2025-1-3 17:42:16 | 显示全部楼层 |阅读模式
    在使用官方SDK的gpio_demo,我的板子是使用外部晶振16MHZ,时钟FEE模式,跳转到中断default_isr,卡在该条指令pUART->C2 &= ~(UART_C2_TE_MASK | UART_C2_RE_MASK );求助
    void sysinit (void)
    {
        SIM_ConfigType  sSIMConfig = {{0},0};
        ICS_ConfigType  sICSConfig = {0};

        /* 初始化通过/失败计数为 0 */
        global_pass_count = 0;
        global_fail_count = 0;

    #if defined(TRIM_IRC)   
        /*如果没修剪,先修剪时钟,
                    主要是针对内部时钟的,可以实现内部时钟在31.25Khz 到 39.0625khz之间的trim,
                    出厂值是31.26khz,这些都可以在datasheet中查到。
                    如果你用外部时钟,当然可以不调用trim,就默认出厂值就行了。 */
        ICS_Trim(ICS_TRIM_VALUE);
    #endif  
                   
                   
        /*
         * 使能 SWD pin, RESET pin
         */
        /*
                     * 注意:请确保其他寄存器位也写入一次,如果需要,需要在这里添加其他位掩码。
         */

    #if defined(SPI0_PINREMAP)        
        sSIMConfig.u32PinSel |= SIM_PINSEL_SPI0PS_MASK;
    #endif

    #if defined(OUTPUT_BUSCLK)
        sSIMConfig.sBits.bEnableCLKOUT = 1;      /* 如果启用,输出总线时钟 */

    #endif

    #if defined(DISABLE_NMI)//in
        sSIMConfig.sBits.bDisableNMI = 1;
    #endif

                    sSIMConfig.u32SCGC |= SIM_SCGC_SWD_MASK | SIM_SCGC_FLASH_MASK |
                              SIM_SCGC_UART1_MASK
                                                                                                     ;
        /* 总线时钟除以2 */
        sSIMConfig.u32CLKDIV |= SIM_CLKDIV_OUTDIV2_MASK;                           

        SIM_Init(&sSIMConfig);                   /* 初始化         SIM */

    #if defined(XOSC_STOP_ENABLE)   
        sICSConfig.oscConfig.bStopEnable = 1;    /*  enabled in stop mode */   
    #endif         

    #if defined(CRYST_HIGH_GAIN)   
        sICSConfig.oscConfig.bGain = 1;           /* high gain */      
    #endif


    #if  (EXT_CLK_FREQ_KHZ >=4000)
        sICSConfig.oscConfig.bRange = 1;           /* high range */
    #endif
           
           
        sICSConfig.oscConfig.bEnable = 1;          /* 启用 OSC */
        sICSConfig.u32ClkFreq = EXT_CLK_FREQ_KHZ;   //16MHZ

                   
    #if     defined(USE_FEE)    //使用FEE模式
        sICSConfig.u8ClkMode = ICS_CLK_MODE_FEE;   
    #elif        defined(USE_FBE_OSC)
        sICSConfig.u8ClkMode = ICS_CLK_MODE_FBE_OSC;   
    #elif        defined(USE_FEE_OSC)   
        sICSConfig.u8ClkMode = ICS_CLK_MODE_FEE_OSC;      
    #endif      

                    /* 初始化ICS */
        ICS_Init(&sICSConfig);   

        /* 初始化UART打印 */
        UART_InitPrint();                        

    #if        defined(PRINT_SYS_LOG)
        //print_sys_log();
    #endif

    }



    void ICS_Init(ICS_ConfigType *pConfig)
    {
      if(pConfig->u8ClkMode == ICS_CLK_MODE_FEE)
      {   
            pConfig->oscConfig.bIsCryst = 1;        /* 晶振输入 */      
            pConfig->oscConfig.bWaitInit = 1;        /* 等待初始化完成 */      
            FEI_to_FEE(pConfig);                     /* 切换到 FEE 模式 with 外部晶振  */
      }
      else if (pConfig->u8ClkMode == ICS_CLK_MODE_FEE_OSC)
      {     
            pConfig->oscConfig.bIsCryst = 0;        /* is clock */      
            FEI_to_FEE_OSC(pConfig);                /* switch to FEE mode with active oscillator input */
      }
      else if (pConfig->u8ClkMode == ICS_CLK_MODE_FBE_OSC)
      {
            pConfig->oscConfig.bIsCryst = 0;        /* is clock */            
            FEI_to_FBE_OSC(pConfig);                /* switch to FBE mode with active oscillator input */
      }
      else
      {
            /* FEI mode by default */

            ICS->C2 = (ICS->C2 & ~(ICS_C2_BDIV_MASK)) | ICS_C2_BDIV(0);        
                                    /*
                                    将BDIV设置为0意味着系统时钟没有被分频,直接使用FLL(Frequency-Locked Loop)输出的时钟频率。
                                    如果需要分频,可以将BDIV设置为1、2、3或4,这将分别对应2、4、6或8的分频比
                                    */
      }
    }


    int main (void)
    {
              /*中断向量表偏移量设置*/
                    //SCB->VTOR = FLASH_BASE | 0x8003400;
           
    //    RTC_ConfigType  sRTCConfig;
    //    RTC_ConfigType  *pRTCConfig = &sRTCConfig;  
           
        /*配置RTC为1Hz中断频率 */
    //    pRTCConfig->u16ModuloValue = 9u;                                      
    //    pRTCConfig->bInterruptEn   = RTC_INTERRUPT_ENABLE;     /* enable interrupt */
    //    pRTCConfig->bClockSource   = RTC_CLKSRC_1KHZ;          /*RTC_CLKSRC_IREF  clock source is 1khz*/
    //    pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100;    /*prescaler is 100*/
    //   
    //    RTC_SetCallback(RTC_Task);
    //    RTC_Init(pRTCConfig);

        /* way 1. GPIO initialize by multiple pin mask */
    //    GPIO_Init(GPIOA, GPIO_PTB5_MASK, GPIO_PinOutput);
        /* way 2. GPIO initialize single pin name */       
                   
                    /*执行处理器初始化 */
        sysinit();
    //  cpu_identify();
                    systick_init();
        GPIO_PinInit(GPIO_PTB5, GPIO_PinOutput);
                   
                    printf("\nRunning the GPIO_demo project.\n");

        while (1){
                            /* Delay 1000 ms */
            systick_delay_s(1u);
                              GPIO_PinSet(GPIO_PTB5);
                                   
                                    systick_delay_s(1u);
                              GPIO_PinClear(GPIO_PTB5);       
                    }

    }


    我知道答案 目前已有0人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-2-19 23:50 , Processed in 0.093471 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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