[求助] 程序烧到芯片里,怎么没出现正确结果啊,哪里错了

LIAOYUAN   2014-11-8 19:59 楼主
#include"led.h"
void LED_GPIO_Config()
{
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); //开启GPIO_G外设时钟

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;    //板上LED编号 D2
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //通用推挽输出
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //设置引脚速率
   GPIO_Init(GPIOG, &GPIO_InitStructure);     //调用库函数,初始化GPIO_G
      GPIO_ResetBits(GPIOG,GPIO_Pin_14 );   //关闭LED灯
    }


#include "stm32f10x.h"
#include"led.h"
/*****************************/
void Delay(vu32 nCount)
{
   for(; nCount != 0; nCount--);
}
/****************************/
main()  //点亮D2
{
   void LED_GPIO_Config();
   while(1)
    {
      GPIO_SetBits(GPIOG,GPIO_Pin_14 );
      Delay(0x8ffff);
      GPIO_ResetBits(GPIOG,GPIO_Pin_14 );   
      Delay(0x8ffff);
    }
}

回复评论 (8)

2推荐 Study_Stellaris 

引用: LIAOYUAN 发表于 2014-11-12 11:17
这个void到底什么意思啊,有的书上是有加的啊,还请详述下

你应该找一本 C 语言的基础学习一下。
void 这种对函数返回值的定义,只有在声明或者实现函数的时候用上。在调用的时候如果加上是编译不过去的。
点赞  2014-11-12 13:26
  1. ain()  //点亮D2
  2. {
  3.    void LED_GPIO_Config();


前面多个 void ,这个程序能编译过去吗  ?
点赞  2014-11-8 21:07
STM32吧,没见到你初始化时钟函数,加上试试,除了COPY代码,认真看下编程手册,了解工作机制。MCU三要素,电源,复位,时钟。

1.png

void RCC_Configuration(void)
{
       
   ErrorStatus HSEStartUpStatus;                               /* 定义枚举类型变量        */
       
       
    RCC_DeInit();                                               /* 复位系统时钟设置*/

    RCC_HSEConfig(RCC_HSE_ON);                                  /* 开启HSE*/

    HSEStartUpStatus = RCC_WaitForHSEStartUp();                 /* 等待HSE起振并稳定*/

    if(HSEStartUpStatus == SUCCESS)                             /* 判断HSE起是否振成功,是则进入if()内部 */
    {                                                         

    RCC_HCLKConfig(RCC_SYSCLK_Div1);                           /* 选择HCLK(AHB)时钟源为SYSCLK 1分频 */

    RCC_PCLK2Config(RCC_HCLK_Div1);                            /* 选择PCLK2时钟源为 HCLK(AHB) 1分频 */

    RCC_PCLK1Config(RCC_HCLK_Div2);                            /* 选择PCLK1时钟源为 HCLK(AHB) 2分频 */
                       
                FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);      /* 使能FLASH预取缓存 */     

    FLASH_SetLatency(FLASH_Latency_2);                         /* 设置FLASH延时周期数为2 */  

    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);      /* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则PLL输出频率为 8MHz * 9 = 72MHz */     

    RCC_PLLCmd(ENABLE);                                        /* 使能PLL */

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)         /* 等待PLL输出稳定 */

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                 /* 选择SYSCLK时钟源为PLL */

    while(RCC_GetSYSCLKSource() != 0x08);                      /* 等待PLL成为SYSCLK时钟源 */
  }

/**************************************************************************************************

  * 打开外设时钟  GPIOA,B,C,D,E
       
***************************************************************************************************/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
                         | RCC_APB2Periph_GPIOB
                           | RCC_APB2Periph_GPIOC
                             | RCC_APB2Periph_GPIOD
                               | RCC_APB2Periph_GPIOE
                                 | RCC_APB2Periph_AFIO, ENABLE);


}


点赞  2014-11-9 21:06
引用: ylyfxzsx 发表于 2014-11-9 21:06
STM32吧,没见到你初始化时钟函数,加上试试,除了COPY代码,认真看下编程手册,了解工作机制。MCU三要素, ...

我在GPIO口设置时已经开了啊 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); //开启GPIO_G外设时钟
点赞  2014-11-9 21:45
你可以找个例程啊,例程里初始化的东西都写好了。你改一下Io的配置就行了。void LED_GPIO_Config(); void 要去掉。
点赞  2014-11-10 20:18
引用: ienglgge 发表于 2014-11-10 20:18
你可以找个例程啊,例程里初始化的东西都写好了。你改一下Io的配置就行了。void LED_GPIO_Config(); void  ...

这个void到底什么意思啊,有的书上是有加的啊,还请详述下
点赞  2014-11-12 11:17
问题已解决
点赞  2014-11-12 13:37
引用: LIAOYUAN 发表于 2014-11-12 11:17
这个void到底什么意思啊,有的书上是有加的啊,还请详述下

void 指的是函数的类型,在函数定义和声明时,会出现,在调用时不出现~~~~~~~~~~
点赞  2014-11-13 07:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复