一个人创造世界 2021-07-20 22:56 采纳率: 50%
浏览 44

关于stm32f407时钟配置出问题了

自己写的时钟函数

int systime_int()
{
        int countnumber=40000;
       
        RCC->CR |=(uint32_t)(1<<16);
        do
        {
                countnumber--;
        }while((!(RCC->CR & (uint32_t)0x20000))|| countnumber );
        if(RCC->CR & (uint32_t)0x20000)       
        {
                //FLASH_SetLatency(FLASH_Latency_5);
                RCC->PLLCFGR |=(uint32_t)(1<<3);//pllm
                RCC->PLLCFGR |=(uint32_t)(0x150<<6);//plln
                RCC->PLLCFGR |=(uint32_t)(0x40<<16);//pllp
                RCC->PLLCFGR &=(uint32_t)(4<<24);//pllq
               
                RCC->CFGR |=(uint32_t)(0x0<<4);//ahb
                RCC->CFGR |=(uint32_t)(1<<15);//apb2
                RCC->CFGR |=(uint32_t)(1<<12);//apb1
                RCC->CFGR |=(uint32_t)(1<<10);//apb1
                RCC->CFGR |=(uint32_t)(1<<19);
                RCC->CFGR |=1<<1;
        }
        else
        {
                return 0x07;//外部震荡器使能失败;
        }
        RCC->CR|=(uint32_t)(1<<24);
        countnumber=40000;
        do
        {
                countnumber--;
               
        }while((!(RCC->CR & 0x2000000)) || countnumber );
        countnumber=40000;
        do
        {
                countnumber--;
        }while(!(RCC->CFGR &(uint32_t)0x08) || countnumber);
        if(RCC->CFGR &(uint32_t)0x08)       
        {
                FLASH_SetLatency(FLASH_Latency_5);
                return 0x01;//pll成功
        }
        else
        {
                return 0x02;//pll失败
        }

}

代码如上,用标准库写的,gpio驱动不起来
经过调试rcc->cr = 0x03038183
rcc->pllcfgr =0x04405408
rcc->cfgr= 0x0008940A
main.c如下

int main()
{
       
        GPIO_InitTypeDef *hgpiog;

        hgpiog->GPIO_Pin=GPIO_Pin_13;
        hgpiog->GPIO_Mode=GPIO_Mode_OUT;
        hgpiog->GPIO_OType=GPIO_OType_PP;
        hgpiog->GPIO_PuPd=GPIO_PuPd_UP;
        hgpiog->GPIO_Speed=GPIO_Speed_100MHz;
       
        systime_int();
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
       
        GPIO_DeInit(GPIOG);
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
        GPIO_Init(GPIOG,hgpiog);
        //USART_Init(USART1,huart);
        while(1)
        {
                //GPIO_WriteBit(GPIOG,GPIO_Pin_13,Bit_SET);
                GPIO_WriteBit(GPIOG,GPIO_Pin_13,Bit_RESET);
        }
       
}

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-07-21 13:40
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

    ​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月20日

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)