MC9S12XE100 如何对MCU构件进行初始化

Fairy_with_Blue 2017-11-04 04:01:22
刚接触到MC9S12XE100,之前学习的是S08AW60的芯片,想将AW60的一些程序改成S12XE100的,有很多地方一知半解,导致有些地方不知道如何更改,请教大神指点!!!!
如何把这段改成S12XE100的初始化?
或者说要实现这样的功能,MC9S12XE100要怎么写?
MC9S12的编程是一样的,求借鉴!!!

//===========================================================================
//函数名称: MCUInit.c (AW60系统初始化子程序)
//函数参数: 无
//函数返回: 无
//功能概要: 系统初始化设置,设置ICGC1和ICGC2寄存器,SOPT的寄存器设置,由外部晶振
// f = 4MHz,产生内部总线时钟f = 20MHz
//===========================================================================
#include "MC9S08AW60.h"
void MCUInit(void)
{
SOPT = 0b01100000; //关闭看门狗
ICGC2 = 0b00110000; //ICG设置总线频率
ICGC1 = 0b01111000;
while(!ICGS1_LOCK); //等待FLL稳定
}

...全文
574 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fairy_with_Blue 2017-11-07
  • 打赏
  • 举报
回复
利用PLL解决,不同的初始化方式,得到同样的结果,这是因为hs08与s12芯片存在区别。

#include <MC9S12XEP100.h>

#define BUS_CLOCK		   40000000	   //总线频率
#define OSC_CLOCK		   16000000	   //晶振频率

void MCUInit(void)
{
    CLKSEL &= 0x7f;       
    PLLCTL &= 0x8F;     
    CRGINT &= 0xDF;
    
    #if(BUS_CLOCK == 40000000) 
      SYNR = 0x44;
    #endif 

    REFDV = 0x83;         //PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=40MHz ,fbus=20M
    PLLCTL =PLLCTL|0x70;  
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); 
    CLKSEL |= 0x80;     
}
Hello Worm 2017-11-06
  • 打赏
  • 举报
回复
这位兄弟是从0开始写代码的?先去官网找参考示例啊,你说的这部分初始化在示例代码中肯定有。

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧