查看: 6077|回复: 9

我用苏大飞思卡尔的KEA库函数?如何写外部时钟配置

[复制链接]
  • TA的每日心情
    开心
    2020-8-14 22:47
  • 签到天数: 608 天

    连续签到: 1 天

    [LV.9]以坛为家II

    26

    主题

    1169

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3009
    最后登录
    2020-9-13
    发表于 2015-12-4 15:50:05 | 显示全部楼层 |阅读模式
    我想用外部晶振8M,来配置总线40M。CPU24M怎么写???
    取之system_SKEAZ1284.C里CLOCK_SETUP是什么???

    oid SystemInit(void)
    {
    // 关看门狗
    #if (DISABLE_WDOG)
        /* WDOG->TOVAL: TOVAL=0xE803 */
        WDOG->TOVAL = WDOG_TOVAL_TOVAL(0xE803); /* Timeout value */
        /* WDOG->CS2: WIN=0,FLG=0,??=0,PRES=0,??=0,??=0,CLK=1 */
        WDOG->CS2 = WDOG_CS2_CLK(0x01); /* 1-kHz clock source */
        /* WDOG->CS1: EN=0,INT=0,UPDATE=1,TST=0,DBG=0,WAIT=1,STOP=1 */
        WDOG->CS1 = WDOG_CS1_UPDATE_MASK | WDOG_CS1_TST(0x00) |
                    WDOG_CS1_WAIT_MASK | WDOG_CS1_STOP_MASK;
    #endif /* (DISABLE_WDOG) */

    // 初始化时钟配置(采用内部参考时钟,系统时钟48MHz,总线时钟24MHz)
    #if (CLOCK_SETUP == 0)
        // 采用24MHz的FLL输出作为时钟源
        ICS->C2 |= ICS_C2_BDIV(0x01);
        // 更新系统时钟分频值
        SIM->CLKDIV = SIM_CLKDIV_OUTDIV1(0x00) |// 将ICSOUTCLK作为系统时钟
                      SIM_CLKDIV_OUTDIV2_MASK |// 将系统时钟的1/2作为总线时钟
                      SIM_CLKDIV_OUTDIV3_MASK;// 将系统时钟的1/2作为定时器时钟
        // 切换到FEI模式
        ICS->C1 = ICS_C1_CLKS(0x00) |// 选中FLL作为时钟源
                  ICS_C1_IREFS_MASK |// 选择37.5KHz的内部参考时钟作为FLL的参考时钟源
                  ICS_C1_IRCLKEN_MASK;// 使能内部参考时钟
        // 将FLL输出直接作为ICSOUTCLK的值,此时ICSOUTCLK=37.5KHz*1280=48MHz
        ICS->C2 = (uint8_t) ((ICS->C2 & (uint8_t) ~(uint8_t) (
        ICS_C2_BDIV(0x07) | ICS_C2_LP_MASK)) | (uint8_t) (ICS_C2_BDIV(0x00)));
        // 等待选中内部参考时钟作为FLL的参考时钟源

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2015-12-5 09:10:13 | 显示全部楼层
    只能配置为内核40M 总线20M ,参考手册上面都有具体的代码配置例程!多看看技术手册,比你盲目的参考比人的代码好很多.....
    回复 支持 1 反对 0

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-12-5 08:24:06 | 显示全部楼层
    帮顶一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
    发表于 2015-12-5 08:45:00 | 显示全部楼层
    帮顶一下
    104930kli5jsmlssemljli.png
    回复

    使用道具 举报

  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2015-12-5 09:24:48 | 显示全部楼层

    KEA64外部晶振8M 设置内核40M 总线20M 参考代码
    1. void sysinit(void)
    2. {
    3.         
    4.     OSC_CR = 0x96;   //选择外部时钟,高功耗高增益
    5.     while ((OSC_CR & OSC_CR_OSCINIT_MASK) == 0);//等待OSC时钟设置完成
    6.     //FEE模式
    7.     ICS_C1 = 0x18;      //8M/256 = 31.25K  ICSOUT = 31.25*1280=40M
    8.     ICS_C2 = 0x20;      //BDIV=1                  
    9.     while ((ICS_S & ICS_S_IREFST_MASK) == 1);
    10.     while ((ICS_S & ICS_S_LOCK_MASK) == 0);
    11.    
    12.     SIM_BUSDIV = 1 ;  // 40M BUS Clock = ICSOUT/2 20M
    13.    
    14.     ICS_C2 = 0x00;//BDIV=1
    15. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2015-12-5 09:29:32 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-12-5 15:47:14 | 显示全部楼层
    花溪村长 发表于 2015-12-5 09:24
    KEA64外部晶振8M 设置内核40M 总线20M 参考代码

    学习一下,谢谢分享
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    111

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    366
    最后登录
    2017-2-9
    发表于 2015-12-6 10:13:11 | 显示全部楼层
    没用过。。。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-8-14 22:47
  • 签到天数: 608 天

    连续签到: 1 天

    [LV.9]以坛为家II

    26

    主题

    1169

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3009
    最后登录
    2020-9-13
     楼主| 发表于 2015-12-10 08:07:14 | 显示全部楼层
    花溪村长 发表于 2015-12-5 09:24
    KEA64外部晶振8M 设置内核40M 总线20M 参考代码

    看看这个


            /* Update system prescalers */
            /* SIM->CLKDIV: OUTDIV1=0,OUTDIV2=1,OUTDIV3=1 */
            SIM->CLKDIV = (SIM_CLKDIV_OUTDIV2_MASK | SIM_CLKDIV_OUTDIV3_MASK);
            /* Switch to FEE Mode */
            /* ICS->C2: BDIV=0,LP=0 */
            ICS->C2 &= (uint8_t)~(uint8_t)((ICS_C2_BDIV(0x07) | ICS_C2_LP_MASK));
            /* OSC->CR: OSCEN=1,??=0,OSCSTEN=0,OSCOS=1,??=0,RANGE=1,HGO=0,OSCINIT=0 */
            OSC->CR = (OSC_CR_OSCEN_MASK | OSC_CR_OSCOS_MASK | OSC_CR_RANGE_MASK);
            /* ICS->C1: CLKS=0,RDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
            ICS->C1 = (ICS_C1_CLKS(0x00) | ICS_C1_RDIV(0x03) | ICS_C1_IRCLKEN_MASK);
            /* Check that the source of the FLL reference clock is the external reference clock. */
            while((ICS->S & ICS_S_IREFST_MASK) != 0x00U) {}
            /* Wait until output of the FLL is selected */
            while((ICS->S & 0x0CU) != 0x00U) {}
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-17 08:39
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    788

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2796
    最后登录
    1970-1-1
    发表于 2016-3-23 09:43:48 | 显示全部楼层
    村长的代码是精华啊
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 08:55 , Processed in 0.107126 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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