在线时间2 小时
UID3229811
注册时间2015-12-10
NXP金币0
该用户从未签到
新手上路

- 积分
- 9
- 最后登录
- 2015-12-17
|
本人是一名学生,刚刚接触freescale单片机,遇到了一些问题想要想大家请教。
我用TBDML仿真时发现无法向寄存器CPMUOSEC_OSCE写入值,不知道是什么原因?谢谢大家,代码如下。
硬件仿真时发现程序停在了检测时钟源起振,单步调试发现向该寄存器写入数据时该地址的值不改变
#include "PEE_BusClock.h"
void Set_PEE(byte _synr, byte _refdiv, byte _postdiv) {
CPMUPROT_PROT =0;
CPMUCLKS_PLLSEL = 1;
while(!CPMUCLKS_PLLSEL);
CPMUSYNR = _synr;
CPMUPOSTDIV = _postdiv;
CPMUREFDIV = _refdiv;
while (!CPMUFLG_LOCK);
CPMUOSC= CPMUOSC_OSCE_MASK+CPMUOSC_OSCBW_MASK+CPMUOSC_OSCFILT1_MASK;//enable external osc OSCE
while(!CPMUFLG_UPOSC) { //if osc up?
// you can check for timeout here with error message report
}
//while(!CPMUFLG_LOCK){ //if PLL LOCKED?
// you can check for timeout here with error message report
//}
//SET CLOCK
CPMUCLKS_PLLSEL = 1; //Bus = F(PLL)/2
//CPMUCLKS_COPOSCSEL = 1; //COP IS clocked from osc
while (CPMUCLKS != 0B10000000) {
asm nop;
}
}
//OSC = 4M
void SetBusClock16M_OSC4M() {
ECLKCTL_NECLK = 0; // enable ECLK output
Set_PEE(0X03,0X40,0X00);
}
/*
void SetBusClock24M_OSC4M() {
ECLKCTL_NECLK = 0; // enable ECLK output
Set_PEE(0X01,0X80,0X70);
}
void SetBusClock25M_OSC4M() {
ECLKCTL_NECLK = 0; // enable ECLK output
Set_PEE(0X58,0X03,0X00);
}
//OSC = 8M
void SetBusClock16M_OSC8M(){
ECLKCTL_NECLK = 0; // enable ECLK output
Set_PEE(0X01,0X80,0X00);
}
void SetBusClock24M_OSC8M(){
ECLKCTL_NECLK = 0; // enable ECLK output
Set_PEE(0X02,0X80,0X00);
}void SetBusClock25M_OSC8M(){
ECLKCTL_NECLK = 0; // enable ECLK output
Set_PEE(0X58,0X07,0X00);
}
*/
|
|