一GPIO输出实验
Posted I am Supreme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一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那句放开。
如果是内部晶振,就需要在这改了,用哪个就把哪个的宏定义打开,不用的就要注释掉。
以上是关于一GPIO输出实验的主要内容,如果未能解决你的问题,请参考以下文章
STM32CubeMX(03)GPIO口输出+定时器实验实现交通灯