新人报到,请允许我小吝啬下。

[复制链接]
2106|3
 楼主| 乡间河太急 发表于 2013-3-9 13:03 | 显示全部楼层 |阅读模式
rc, ck, ST, ic, PLL
一直知道有这个网站存在,不过没怎么来过,还提一下,哈哈,我曾经在网站根据地正门口前仰望过 21IC 这个**,我在天河,嘿嘿
最近在学STM32,遇到问题搜一下,被百度引领到了这里,看了一个帖子,感到这里的版主还是特别给力的,很有耐心。
好了,进入正题。
看了一段时间的书,开始折腾手头的板子,用的芯片是103ZE6。按照自己的理解配置好时钟后,发现程序不能表达了。硬件仿真一下,发现在将时钟切换成PLL72M输出后,下一步就无法执行了。对照着正点原子的程序,对比两个程序切换完时钟后的相应寄存器的设置,发现时钟并没有配置错。(当然,我只观察了RESET和CLOCK这个窗口、一些IO窗口和MDK左边的一些寄存器,不排除可能存在其他我还不了解的潜在影响。)
不明白为什么,切换完时钟后,单击下一步,汇编区里面的代码就全变成了FFFF FFFF;undefined这样的字眼。请问是怎么回事呢?
下面是自己的程序。
  1. #include "sys.h"
  2. void Systick()
  3. {       
  4.         SysTick->VAL = 0X00;
  5.         SysTick->CTRL |= 0X01;
  6.         while(!((SysTick->CTRL)>>16)&0X01);
  7.         SysTick->CTRL =0X00;       
  8. }
  9. void LED_Init(void)
  10. {
  11.         RCC->APB2ENR|=1<<3;    //使能PORTB时钟                    
  12.         RCC->APB2ENR|=1<<6;    //使能PORTE时钟       
  13.                     
  14.         GPIOB->CRL&=0XFF0FFFFF;
  15.         GPIOB->CRL|=0X00300000;//PB.5 推挽输出            
  16.     GPIOB->ODR|=1<<5;      //PB.5 输出高
  17.                                                                                           
  18.         GPIOE->CRL&=0XFF0FFFFF;
  19.         GPIOE->CRL|=0X00300000;//PE.5推挽输出
  20.         GPIOE->ODR|=1<<5;      //PE.5输出高
  21. }
  22. int main()
  23. {
  24.         RCC->CR = 0X01;        //HSION
  25.         while(!((RCC->CR>>1)&0X01)); //wait for HSIRDY
  26.         RCC->CR |= 0X00010080;        //HSEON
  27.         while(!((RCC->CR>>17)&0X01));        //wait for HSERDY
  28.         RCC->CFGR = 0X001D0400;        //PLLXTPRE cleared,PLLSRC seted,PLLMUL = 9       
  29.         RCC->CR |= 0X01000000;        //PLLON
  30.         while(!((RCC->CR>>25)&0X01));        //wait for PLLRDY
  31.         RCC->CFGR |= 0X02;        //change system clock
  32.         while(!((RCC->CFGR>>3)&0X01));
  33.         LED_Init();
  34.         SysTick->LOAD = 9000*1000;
  35.         while(1)
  36.         {
  37.                 GPIOB->ODR &= ~(0<<5);
  38.                 Systick();
  39.                 GPIOB->ODR = 1<<5;
  40.                 Systick();
  41.         }
  42. }
新人分不多,允许我小吝啬一下哈,谢谢各位。
 楼主| 乡间河太急 发表于 2013-3-9 14:15 | 显示全部楼层
自行解决了,哈哈,谁来3L就两分到手啦,虽然不多
金融小数 发表于 2013-3-9 16:34 | 显示全部楼层
应该先选择HSE作为系统时钟,然后设置PLL

评分

参与人数 1威望 +1 收起 理由
乡间河太急 + 1 很给力!

查看全部评分

 楼主| 乡间河太急 发表于 2013-3-9 18:39 | 显示全部楼层
金融小数 发表于 2013-3-9 16:34
应该先选择HSE作为系统时钟,然后设置PLL

亲,如何结贴给分啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部