OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5037|回复: 0

寄存器操作led,老是出错。(已解决)

[复制链接]

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-3-14
在线时间
0 小时
发表于 2013-4-9 08:39:14 | 显示全部楼层 |阅读模式

#define RCC_CR ((volatile unsigned long*)(0x40021000))
#define RCC_CFGR ((volatile unsigned long*)(0x40021004))
#define RCC_APB2ENR ((volatile unsigned long*)(0x40021018))
//#define AliasAddr ((volatile unsigned long*)(0x42000000+0x21000*32+24*4))
#define GPIOF_CR ((volatile unsigned long*)(0x40011c00))
#define GPIOF_ODR ((volatile unsigned long*)(0x40011c0c))


void RCC_Config(void);
void LED(void);

int main()
{
 RCC_Config();
 LED();
 while(1);
}    

void RCC_Config(void)
{
 *RCC_CR  = *RCC_CR & 0xFFFEFFFF;   //HSE 复位一下
 *RCC_CR  = *RCC_CR & 0xFFFBFFFF;   //HSE 旁路关
 *RCC_CR  = *RCC_CR | 0x00010000;    //RCC_CR,configure HSE;
 while((*RCC_CR)&0x20000==0);    //HSE ready; 
 *RCC_CFGR  = (*RCC_CFGR & 0xffffff0f);//Clear HPRE[3:0] bits value
  *RCC_CFGR  = (*RCC_CFGR | 0x00000000);//AHB预分频,0xxx:SYSCLK不分频
  *RCC_CFGR  = (*RCC_CFGR & 0xFFFFF8FF);//Clear PPRE1[2:0] bits
  *RCC_CFGR  = (*RCC_CFGR | 0x400); //低速APB预分频,100:HCLK 2分频;
  *RCC_CFGR  = (*RCC_CFGR & 0xFFFFC7FF);//Clear PPRE2[2:0] bits
  *RCC_CFGR  = (*RCC_CFGR | 0x00);//高速APB预分频,0xx:HCLK不分频
  *RCC_CFGR  = (*RCC_CFGR & 0xFFC0FFFF);//Clear PLLSRC, PLLXTPRE and PLLMUL[3:0] bits
  *RCC_CFGR  =(*RCC_CFGR | 0x001C0000); //PLLMUL=9,PLLSRC=HSE;
  *RCC_CFGR  =(*RCC_CFGR | 0x00010000 );
  //*AliasAddr  = 1;   //PLL CLK enable;
  *RCC_CR = *RCC_CR | 0x01000000;
  while(!((*RCC_CR)&0x02000000));  //Wait for PLL ready;
  *RCC_CFGR  = *RCC_CFGR | 0x02; //SYSCLK=PLL;
  while(((*RCC_CFGR)&0x0c)!= 0x08); //Wait for SYSCLK ready;
  *RCC_APB2ENR  = *RCC_APB2ENR | 0x80; //GPIOF CLCK ready;
}

void LED(void)
{
 *GPIOF_CR  = *GPIOF_CR | 0x73000000; //输出模式,最大速度50MHz,通用推挽输出模式;
 //*GPIOF_ODR  = *GPIOF_ODR | 0xffffffbf;//PF6=0,LED ON;  
}
调试时,可以看到程序老是从主flash跑飞,如下:


运行到这一句时,就跳到下面不动了。

我只用了自带的启动代码,别的没用。
也看了好多例子,感觉没什么错,结果老是错。所以劳烦各位前辈看看。谢谢指点。

PS:调试可以看到上面的语句运行都正常。

在PLL打开之前没有预缓存延迟。


还有一点是,手册有这么一句话:


我的AHB预分频系数是“1”,所以没开,但是还是出错了。
期待高手指点!谢谢。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 16:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表