查看: 3854|回复: 1

[原创] 【LPC800项目】代码分享:系统时钟配置.

[复制链接]
  • TA的每日心情
    开心
    2023-6-2 13:32
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    44

    主题

    995

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4413
    最后登录
    2023-6-2
    发表于 2016-12-1 13:58:04 | 显示全部楼层 |阅读模式
    本帖最后由 andrewz 于 2016-12-1 14:01 编辑

    好了,既然是全手打的,希望大家多多支持.

    工程需要用到两个有关芯片的现成的文件,Keil_startup_LPC8xx.s和LPC8xx.h
    以及一些其他的相关头文件和库,如core_cm0plus.h core_cmFunc.h core_cmInstr.h stdio.h string.h

    把.s文件中的时钟初始化函数删掉了. stack_size改为0x400.

    因而,需要自己写时钟配置函数.
    1. #include "./bsp/chip/LPC8xx.h"

    2. #define SYSCON_PDRUNCFG_SYSPLL_PD   ((unsigned long)1<<7)
    3. #define SYSCON_PDRUNCFG_SYSOSC_PD   ((unsigned long)1<<5)
    4. #define SYSCON_PDRUNCFG_IRC_PD      ((unsigned long)1<<1)
    5. #define SYSCON_SYSPLLCLKUEN_ENA     ((unsigned long)1<<0)


    6. #define SYSCON_SYSPLLCTRL_MSEL_SHIFT    ((unsigned long)0)
    7. #define SYSCON_SYSPLLCTRL_PSEL_SHIFT    ((unsigned long)5)

    8. #define SYSCON_SYSPLLSTAT_LOCK      ((unsigned long)1<<0)

    9. #define SYSCON_MAINCLKSEL_SEL_SHIFT ((unsigned long)0)
    10. #define SYSCON_MAINCLKUEN_ENA       ((unsigned long)1<<0)


    11. void Syscon_init(void){
    12.     LPC_SYSCON->PDRUNCFG&=~SYSCON_PDRUNCFG_SYSPLL_PD;
    13.     LPC_SYSCON->SYSPLLCLKSEL=0x00000000;
    14.     LPC_SYSCON->SYSPLLCLKUEN&=~SYSCON_SYSPLLCLKUEN_ENA;
    15.     LPC_SYSCON->SYSPLLCLKUEN|=SYSCON_SYSPLLCLKUEN_ENA;
    16.    
    17.     LPC_SYSCON->SYSPLLCTRL=((4<<SYSCON_SYSPLLCTRL_MSEL_SHIFT)|(0<<SYSCON_SYSPLLCTRL_PSEL_SHIFT));
    18.    

    19.     while((LPC_SYSCON->SYSPLLSTAT&SYSCON_SYSPLLSTAT_LOCK)==0);
    20.    
    21.     LPC_SYSCON->MAINCLKSEL=0;
    22.     LPC_SYSCON->MAINCLKSEL=(3<<SYSCON_MAINCLKSEL_SEL_SHIFT);
    23.     LPC_SYSCON->MAINCLKUEN=0;
    24.     LPC_SYSCON->MAINCLKUEN|=SYSCON_MAINCLKUEN_ENA;
    25. }
    复制代码


    理论上,这样系统的时钟就设置好了,应该PLL的输出是12M*5/2=30M.

    根据UM10800:
    123.png
    此时的main clock应该是30M.

    但是通过对单片机进一步使用.发现这里的设置/2并没有起作用.
    似乎AHB的速度是60M,也就是说分频项无作用.

    通过对UART/SCT/Systick的实际测量.
    AHB的速度确实是60M.

    那么,这个单片机实际上能跑100M吗?

    希望有弄明白的坛友一起分享下.

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-24 08:30
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]常住居民I

    22

    主题

    817

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1713
    最后登录
    2019-12-7
    发表于 2016-12-2 13:00:53 来自手机 | 显示全部楼层
    支持下     
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 14:10 , Processed in 0.085098 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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