实验一、GPIO输出实验

  • GPIO输出实验

main函数如下

int main(void)

{

        rcu_apb2_clock_config(RCU_APB2_CKAHB_DIV1);//设置主频108M(#define __SYSTEM_CLOCK_108M_PLL_HXTAL         (uint32_t)(108000000)),8M外部晶振  (#define HXTAL_VALUE    ((uint32_t)8000000))

  systick_config();//配置1ms SysTick 系统滴答定时器

        rcu_periph_clock_enable(RCU_AF);//AF时钟使能

       

        gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);//下载口NJTRST引脚当做普通I/O口

        rcu_periph_clock_enable(RCU_GPIOB);//GPIOB时钟打开

        gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);//PB4配置成输出 推挽输出模式

       

    while(1)

    {

        delay_1ms(1000);//等待1000ms

        gpio_bit_set(GPIOB, GPIO_PIN_4);//PB4输出高

        delay_1ms(1000);

        gpio_bit_reset(GPIOB, GPIO_PIN_4);//PB4输出低

    }



}

原理图如下

根据原理图可以看出LED1对应的时PB4,因此需要对PB4编程。对应时钟以及配置输出,输出选择推挽输出,速率选择默认的50MHZ,一般的GPIO这两句就可以了。但是为什么这个PB4需要加一句gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);,我们需要看一下芯片手册。

可以看出,PB4默认为就是NONJTRST,为下载口,但是我们现在一般都是SWD方式,所以说这个管脚时用不上的,但是呢,作为普通的PB4口,需要通过remap重映射到PB4,因此软件里需要有这么一句话,而PB5默认为就是PB5,就直接是配置时钟,配置管脚输出就行。

很多情况我们可能需要去改系统时钟或者是采用外部晶振或者内部晶振(GD32D的片子一般需要采用外部晶振,内部晶振不稳,可能会带来这样或者那样的问题),那这个在程序;里哪里去改呢?

一、首先找到这个启动文件

  • 启动文件149行这里面有个SystemInit,

  • 右键点击Go To Definition进来,往下拉,拉到186行,有个system_clock_config();

  • 再选择system_clock_config();右键点击Go To Definition进来

五、点击__SYSTEM_CLOCK_108M_PLL_HXTAL右键选择Go To Definition进来,可以看到现在是配置成108M主频外部晶振,如果需要将主频降低到72MHZ,就把第59行屏蔽掉,把72M那句放开。

如果是内部晶振,就需要在这改了,用哪个就把哪个的宏定义打开,不用的就要注释掉。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I am Supreme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值