以前做实验一直是在RAM里进行,用的CMD文件是28033_RAM_lnk.CMD, 使用外部晶振20M,内部经12倍频再4分频,得到60M的总线频率,但在烧到FLASH内后就发现时钟频率被减半了,本来在设置的串口波特率是38400,串口调试助手的波特率设置成38400,可以正常接收到数据,但是烧到FLASH内后就得将串口调试助手的波特率设置成19200才能正常接收。在烧写时烧写工具On-Chip Flash Programer的左上角的Clock Configuration 选择项上,OSCCLK是10,DIVSEL是/2,PLLCR是12,这三项均是灰色的,不可选,只有SYSTEMCLOCKOUT是60.0000。我将烧录进去的代码全部只擦除,这个问题依然存在,好像是你只要在FLASH上烧了一次代码后,时钟就被锁死了。后来我在程序的PLL设置时将DIVSEL由原来的1改成了2,串口恢复正常,不过不管是下载到RAM里还是FLASH里,DIVSEL都要改为2才行,原来能够正常工作的CAN却出现了问题,数据都已进了发送邮箱了,但就是一直在等待CANTA置位,数据使终发不出,邮箱接收中断也进不了了,给人的感觉就好像这个邮箱的CANME没有打开一样,但我确实是打开了。这是什么原因啊,求教各位了,最重要的就是如何解决这个问题,谢谢各位的回答。这个问题说也奇怪,我当天晚上下班前已烧到FLASH里用了,能用,后来第二天上班打开电脑再去用就发现串口不对了 |