赞
踩
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的片子一般需要采用外部晶振,内部晶振不稳,可能会带来这样或者那样的问题),那这个在程序;里哪里去改呢?
一、首先找到这个启动文件
五、点击__SYSTEM_CLOCK_108M_PLL_HXTAL右键选择Go To Definition进来,可以看到现在是配置成108M主频外部晶振,如果需要将主频降低到72MHZ,就把第59行屏蔽掉,把72M那句放开。
如果是内部晶振,就需要在这改了,用哪个就把哪个的宏定义打开,不用的就要注释掉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。