飞思卡尔mc9s08烧录方法_飞思卡尔8位单片机MC9S08JM60开发板实践教程

本文详细介绍了飞思卡尔8位单片机MC9S08JM60的开发环境搭建,包括系统时钟的设置,讲解了如何进行MCG初始化,以实现从FEI模式切换到FBE模式,并对MCGC2寄存器的各个字段进行了说明,如BDIV、RANGE和HGO等,指导读者进行正确的频率分频和振荡器模式选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章

搭建实验环境

系统时钟设置

#include

"App\Include\App.h"

#ifndef _MCG_C

#define _MCG_C

//oscillator 12MHZ

倍频为

24MHZ

()先

8

分频后

16

倍频

void S_MCGInit(void)

{

/* the MCG is default set to FEI mode, it should be change to FBE mode*/

/**************************************************************************

***********

MCGC2

[7:6] BDIV

总线频率分频因子

选择由

MCGC1

寄存器中

CLKS

位决定的时钟源的分频。这控制总

线频率。

00

编码

0

时钟

1

分频

01

编码

1

时钟

2

分频(复位后默认)

10

编码

2

时钟

4

分频

11

编码

3

时钟

8

分频

[5] RANGE

频率范围选择

选择外部振荡器或者外部时钟源的频率范围。

1

选择

1MHz

16MHz

外部振荡器的频率范围。

(

1MHz

40MHz

的外部时钟电源)的

高频率范围

0

选择

32kHz

100kHz

外部振荡器的频率范围。

(

32kHz

1MHz

的外部时钟电源)的

低频率范围

[4] HGO

高增益振荡器选择

控制外部振荡器操作模式。

1

配置外部振荡器为高增益运行

0

配置外部振荡器为低功耗运行

[3] LP

低功耗选择

控制在忽略模式中

FLL

(或者

PLL

)是否为无效

1 FLL

(或

PLL

)在忽略模式(低功耗)中为无效的。

0 FLL

(或

PLL

)在忽略模式中为无效的。

该程序移植注意事项:1.注意时钟的配置 2.PRM文件的配置 //========================================================== FLASH时钟配置: 文件“S08_Flash.h”中 “#define BUS_CLOCK 20000000”这句要根据自己所用的总线频率设定 //========================================================== PRM文件配置注意如下: SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */ Z_RAM = READ_WRITE 0x0070 TO 0x00FF; RAM = READ_WRITE 0x0170 TO 0x086F; ROM = READ_ONLY 0x18D0 TO 0xFFAF; ROM1 = READ_ONLY 0x0870 TO 0x17FF; ROM2 = READ_ONLY 0xFFC0 TO 0xFFC5; FLASH_TO_RAM = READ_ONLY 0x1860 TO 0x18CF RELOCATE_TO 0x0100;//!!! /* INTVECTS = READ_ONLY 0xFFC6 TO 0xFFFF; Reserved for Interrupt Vectors */ END //注:RAM地址0x0100 to 0x016F预留,用于存放擦写FLASH的程序; //========================================================== 在移植时由于新建工程所以经常忘记下面这3段的调整 1 Z_RAM = READ_WRITE 0x0070 TO 0x00FF; RAM = READ_WRITE 0x0170 TO 0x086F; 2 ROM = READ_ONLY 0x18D0 TO 0xFFAF; ROM1 = READ_ONLY 0x0870 TO 0x17FF; FLASH_TO_RAM = READ_ONLY 0x1860 TO 0x18CF RELOCATE_TO 0x0100; 3 FLASH_ROUTINES INTO FLASH_TO_RAM; //========================================================== 在移植过程中有可能出现下面的编译报错: Link Error:L1102 Out allocation space in segment FLASH_TO_RAM at address 0xXXXX 这是因为 FLASH_TO_RAM = READ_ONLY 0x1860 TO 0x18CF RELOCATE_TO 0x0100; 这里分配的空间不够,适当扩大就可以了 注:这个例程的缺点在于直接分配了RAM给擦写FLASH的程序,使这写RAM大部分时间浪费掉而不能用于其他用途 参考文献中介绍了一种较好的实现方式。 参考文献: “在HCS08微控制器上使用FLASH存储器模拟EEPROM”和 “HCS08系列单片机FLASH模拟EEPROM的应用”(请自行在网上搜所这些文档) 免责声明: 这段程序并非本人所写,也是摘自别处。 这段程序只是经过MC9S08AC60demo板简单的测试,未经过大批量和长时间的验证,所以若用在产品当中应谨慎,若出现因引用本程序而出现任何问题本人将不承担任何责任! jjj_sun 2009-3-28 23:24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值