打印

各位大牛帮帮忙

[复制链接]
1640|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pi, IO, GPIO, gp
/* Includes ------------------------------------------------------------------*/
#include "gd32f1x0.h"
#include <stdio.h>
#include "systick.h"

/* Private functions ---------------------------------------------------------*/
/**
  * @brief  Configure the GPIO ports.
  * @param  None
  * @retval None
  */
void LED_config(void)
{
    GPIO_InitPara GPIO_InitStructure;
    RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_GPIOB,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_Init(GPIOB,&GPIO_InitStructure);
}

/**
  * @brief  Toggle the LED every 500ms.
  * @param  None
  * @retval None
  */
void LED_Spark(void)
{
    /*static __IO uint32_t TimingDelayLocal = 0;

    if (TimingDelayLocal != 0x00)
    {   
        if(TimingDelayLocal < 500)
        {
            GPIO_ResetBits(GPIOC, GPIO_PIN_10);
        }
        else
        {
            GPIO_SetBits(GPIOC,GPIO_PIN_10);
        }
        TimingDelayLocal--;
    }
    else
    {
        TimingDelayLocal = 1000;
    } */
}

/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{   
    LED_config();
    SysTick_Configuration();
        GPIO_SetBits(GPIOB, GPIO_PIN_9);
    while (1)
    {
  }各位帮帮忙,不知道为什么LEN不亮,电路没有为题,这代码是以前用ST单片机时写的,可以运行的,现在用在GD上不行,程序编译后没有错。谢谢各位了
沙发
小曹111|  楼主 | 2016-4-20 09:33 | 只看该作者
这是原理图,各位帮忙看看原因

QQ截图20160420093145.png (92.27 KB )

这是原理图

这是原理图

QQ截图20160420093328.png (15.08 KB )

QQ截图20160420093328.png

使用特权

评论回复
板凳
whtwhtw| | 2016-4-20 09:37 | 只看该作者
GPIO口都挂在APB2总线上,所以要用
RCC_APB2PeriphClock_Enable(RCC_AHBPERIPH_GPIOB,ENABLE);

另外要看看系统时钟和sistick设置是否有问题

使用特权

评论回复
地板
df_flying| | 2016-4-20 10:58 | 只看该作者
应该是RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOB,ENABLE);  你得知道那些外设挂载在哪条时钟线上(AHB APB123等) ,
时钟不是乱开的。你也可以打开这条函数(右击转到)RCC_AHBPeriphClock_Enable 你可以看到你要的PORTB在不在这个时钟上,

可以看到AHB 是不能开PORTB时钟的
应该是APB2

使用特权

评论回复
5
海中水| | 2016-4-20 11:06 | 只看该作者
你很逗啊!这个你在ST上运行也是不会亮的。你初始化配置的是PB9,而你在操作的时候用的PC10,我就不信你在ST上它能亮。

使用特权

评论回复
6
df_flying| | 2016-4-20 11:08 | 只看该作者
海中水 发表于 2016-4-20 11:06
你很逗啊!这个你在ST上运行也是不会亮的。你初始化配置的是PB9,而你在操作的时候用的PC10,我就不信你在S ...

void LED_Spark(void)   这个在主函数他没有用到啊! 放在那里 相当于个干扰项,主函数就一个SET

使用特权

评论回复
7
小曹111|  楼主 | 2016-4-20 12:03 | 只看该作者
海中水 发表于 2016-4-20 11:06
你很逗啊!这个你在ST上运行也是不会亮的。你初始化配置的是PB9,而你在操作的时候用的PC10,我就不信你在S ...

我改错了,在ST上用的是PC10,这上面是PC9

使用特权

评论回复
8
小曹111|  楼主 | 2016-4-20 12:53 | 只看该作者
df_flying 发表于 2016-4-20 10:58
应该是RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOB,ENABLE);  你得知道那些外设挂载在哪条时钟线上( ...

我试过了,APB2也不行的

使用特权

评论回复
9
小曹111|  楼主 | 2016-4-20 12:57 | 只看该作者
whtwhtw 发表于 2016-4-20 09:37
GPIO口都挂在APB2总线上,所以要用
RCC_APB2PeriphClock_Enable(RCC_AHBPERIPH_GPIOB,ENABLE);

我试了,好像也不行

使用特权

评论回复
10
小曹111|  楼主 | 2016-4-20 13:00 | 只看该作者
df_flying 发表于 2016-4-20 10:58
应该是RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOB,ENABLE);  你得知道那些外设挂载在哪条时钟线上( ...

这是GDAPB2的时钟线

QQ截图20160420125959.png (28.07 KB )

QQ截图20160420125959.png

使用特权

评论回复
11
小曹111|  楼主 | 2016-4-20 13:02 | 只看该作者
海中水 发表于 2016-4-20 11:06
你很逗啊!这个你在ST上运行也是不会亮的。你初始化配置的是PB9,而你在操作的时候用的PC10,我就不信你在S ...

那个函数注释掉了的,那是以前写的一个函数,现在注释掉了

使用特权

评论回复
12
df_flying| | 2016-4-20 13:03 | 只看该作者
本帖最后由 df_flying 于 2016-4-20 13:05 编辑
小曹111 发表于 2016-4-20 12:53
我试过了,APB2也不行的

那可能是系统哪里配置有问题吧  在检查下吧  程序 发过来看下吧

使用特权

评论回复
13
小曹111|  楼主 | 2016-4-20 13:04 | 只看该作者
whtwhtw 发表于 2016-4-20 09:37
GPIO口都挂在APB2总线上,所以要用
RCC_APB2PeriphClock_Enable(RCC_AHBPERIPH_GPIOB,ENABLE);

你能给我一份GD的例程吗?谢谢了

使用特权

评论回复
14
小曹111|  楼主 | 2016-4-20 13:57 | 只看该作者
df_flying 发表于 2016-4-20 13:03
那可能是系统哪里配置有问题吧  在检查下吧  程序 发过来看下吧

给我个邮箱吧,这程序太大了,发不了,谢谢了

使用特权

评论回复
15
xuander| | 2016-4-20 14:49 | 只看该作者

如果实在查不到原因,
就查下硬件,以及换万用表查电平。
其实这一步要先做。

使用特权

评论回复
16
海中水| | 2016-4-20 15:04 | 只看该作者
df_flying 发表于 2016-4-20 11:08
void LED_Spark(void)   这个在主函数他没有用到啊! 放在那里 相当于个干扰项,主函数就一个S ...

哦!那就是驱动能力的问题了。

使用特权

评论回复
17
海中水| | 2016-4-20 15:05 | 只看该作者
小曹111 发表于 2016-4-20 12:53
我试过了,APB2也不行的

建议你拿示波器量一下IO口电平,有可能是驱动能力不够。看一下他们的对应数据手册,不行把那个限流电阻该小一点。

使用特权

评论回复
18
海中水| | 2016-4-20 15:06 | 只看该作者
小曹111 发表于 2016-4-20 13:02
那个函数注释掉了的,那是以前写的一个函数,现在注释掉了

唉!我还以为你在主函数里面有用到。

使用特权

评论回复
19
wztoad| | 2016-4-20 15:16 | 只看该作者
void  GD_EVAL_LEDInit (Led_TypeDef LedNum)
{
    GPIO_InitPara  GPIO_InitStructure;

    /* Enable the LED Clock */
    RCC_AHBPeriphClock_Enable(GPIO_CLK[LedNum], ENABLE);

    /* Configure the LED pin */
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN[LedNum];
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(GPIO_PORT[LedNum], &GPIO_InitStructure);
    GPIO_PORT[LedNum]->BCR = GPIO_PIN[LedNum] ;
}

/**
  * @brief  Turn on selected LED
  * @param  LedNum: Specifies the Led to be turn on
  *         This parameter can be one of following parameters:
  *            @arg LED1
  *            @arg LED2
  *            @arg LED3
  *            @arg LED4
  * @retval None
  */
void GD_EVAL_LEDOn(Led_TypeDef LedNum)
{
    GPIO_PORT[LedNum]->BOR = GPIO_PIN[LedNum];        //置高电平
}

使用特权

评论回复
20
yes19891989| | 2016-4-20 17:08 | 只看该作者
大哥,你不觉得你LED串的电阻太大了吗,5.1K,电流都不到1MA。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

28

帖子

0

粉丝