第一范文网 - 专业文章范例文档资料分享平台

零基础写飞思卡尔HCS12X程序,PE示例[原]

来源:用户分享 时间:2025/12/9 7:45:04 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

其实HCS12X的时钟很简单,比起ARM,甚至是HCS08的8位MCU,就是一个PLL和BUS COLOCK之间的换算。

很多不人愿意看DATASHEET,图太多了,寄存器也是样不多一个样子,所以往往导致程序出问题。

但是,时钟,CRG这块很重要,是一切模块的基础。

那么,如果你不愿意write code,那么就generate code吧。

首先介绍一下process expert,是内嵌在codewarrior(for FSL)是的个代码生成器,但是它只能初始化,形成框架,创建中断。但是你的过程函数(procedure body)肯定是要自己写的。

基本上,所有的初始化都可以自动生成,包括很多人不愿意自己写的memory map,eeprom,中断优先级等杂复一点的问题。 总的概括来说,有如下几个方面的功能: 1 信号输入输出的自动生成和初始化;

2 信号测量功能的自动生成和初始化,包括测量脉冲,AD等; 3 定时器,看门狗。。

4 同步异步通信模块(IIC SPI SCI) 5 FLASH EEPROM操作

值得一提的是还有算法自动生成,在HCS12X里可以生成图像二进制数组。当然在CPU为DSP时,FFT,滤波等等算法也少不了。

主要的操作按上面的图123来就可以了,注意CODEWARRIOR版本要5.0的,5.0版以下的不支持XS128的PE。。。

如果还有加入其它的模块,点ADD BEAN,即可。

好了,按上面的图操作之后呢,点make,代码会自动生成。 不要纳闷生成的代码找不到,这是因为时钟代码放在_EntryPoint函数里了比main更早执行,比_Startup也早。其实在程序里0xFFFA起始的中断地址里,这个地址是复位中断地址。

代码如下:

setReg8(MMCCTL1, 0); setReg8(DIRECT, 0); setReg8(IVBR, 255); setReg8(ECLKCTL, 64); setReg8(CLKSEL, 0);

setReg8(PLLCTL, 129); /* Disable the PLL */

setReg8(SYNR, 65); /* Set the multiplier register */ setReg8(REFDV, 192); /* Set the divider register */

setReg8(POSTDIV, 0); /* Set the post divider register */ setReg8(PLLCTL, 193);

while(!CRGFLG_LOCK) { /* Wait until the PLL is within the desired tolerance of }

setReg8Bits(CLKSEL, 128); setReg8(VREGHTCL, 16);

真正有用的配置代码就 setReg8(SYNR, 65); setReg8(REFDV, 192);两句,而PE是出于完整性和规范性考虑,生成了一堆代码。 OK,基本就是这样了。

零基础写飞思卡尔HCS12X程序,PE示例[原].doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c200mj893xh2xn8u9vo08_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top