当前位置:   article > 正文

实验一、GPIO输出实验_iar gpio输出实验

iar gpio输出实验
  • GPIO输出实验

main函数如下

  1. int main(void)
  2. {
  3.         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))
  4.   systick_config();//配置1ms SysTick 系统滴答定时器
  5.         rcu_periph_clock_enable(RCU_AF);//AF时钟使能
  6.        
  7.         gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);//下载口NJTRST引脚当做普通I/O口
  8.         rcu_periph_clock_enable(RCU_GPIOB);//GPIOB时钟打开
  9.         gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);//PB4配置成输出 推挽输出模式
  10.        
  11.     while(1)
  12.     {
  13.         delay_1ms(1000);//等待1000ms
  14.         gpio_bit_set(GPIOB, GPIO_PIN_4);//PB4输出高
  15.         delay_1ms(1000);
  16.         gpio_bit_reset(GPIOB, GPIO_PIN_4);//PB4输出低
  17.     }
  18. }

原理图如下

根据原理图可以看出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那句放开。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/302039?site
推荐阅读
相关标签
  

闽ICP备14008679号