GD32F10x的输出模式

1. 单片机型号的识别。

2. GPIO的输出模式。

  1. 开漏模式 2.推挽模式 3.复用开漏模式 4.复用推挽模式。

开漏模式:(写入位设置,输出数据寄存器来控制MOS)

只有N-MOS管导通。PMOS不导通。

当N-MOS的栅极为0,N-MOS管导通。那么I/o输出0。

当N-MOS的栅极为1,N-MOS管截止。那么I/o为高阻态。需要接上拉电阻。

推挽模式:(写入位设置,输出数据寄存器来控制MOS)

当N-MOS的栅极为0,N-MOS管导通。P-MOS截止。那么I/o输出0

当N-MOS的栅极为1,N-MOS管截止。P-MOS导通。那么I/o输出1.

复用开漏模式 /推挽模式:(由复用功能输出控制MOS,主要跟开漏/推挽的区别在这)

3. 点亮LED灯。

在板子的硬件里有两个LED如下:

可以看出只要PB0,PB1输出高电平就让两个LED灯亮。

程序设计:让LED1与LED2交替亮灭。时间自由。相当于不断地给PB1与PB2高低电平。

所以选择推挽模式

4. 具体的代码实现

LED.h

cpp 复制代码
#ifndef _LED_H
#define _LED_H

#include "gd32f10x.h"
#include <stdio.h>

#define LED1 1
#define LED2 2

void Led_Init(void);

void Led_Open(unsigned char LED_Number);
void Led_Close(unsigned char LED_Number);

#endif

LED.c

cpp 复制代码
#include "LED.h"

void Led_Init(void)
{
	rcu_periph_clock_enable(RCU_GPIOB);		/* 使能GPIOB外设时钟 */
	
  /* 初始化GPIO 参数1:端口号 参数2:端口模式(这里选择推挽) 参数3:端口的速率 参数4:端口引脚
   (为什么可以设置多个引脚用位或就可以) 按照1,2,4,8,16......对应每一bit  */
	gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1);
  
  /* 把PB1,PB2设置为0(根据硬件图一开始灯是熄灭) */
	gpio_bit_reset(GPIOB, GPIO_PIN_0 | GPIO_PIN_1);
}

void Led_Open(unsigned char LED_Number){
	switch(LED_Number){
		case LED1:
			gpio_bit_set(GPIOB, GPIO_PIN_0); /* 把引脚设置为1 */
			break;
		case LED2:
			gpio_bit_set(GPIOB, GPIO_PIN_1);
			break;
		default:
			break;
	}
}

void Led_Close(unsigned char LED_Number){
	switch(LED_Number){
		case LED1:
			gpio_bit_reset(GPIOB, GPIO_PIN_0); /* 把引脚设置为0 */
			break;
		case LED2:
			gpio_bit_reset(GPIOB, GPIO_PIN_1);
			break;
		default:
			break;
	}
}

main.c

cpp 复制代码
#include "LED.h"
#include "DELAY.h"

int main(){
	Led_Init();
	while(1) {
		Led_Open(LED1);
		Led_Close(LED2);
		delay_ms(1000);
		Led_Open(LED2);
		Led_Close(LED1);
		delay_ms(1000);
	}
}

程序实现:每1s两个LED交替亮灭。

gpio_bit_set与 gpio_bit_reset可以用gpio_bit_write来替换。

gpio_bit_write可以设置bit的值。比如:

gpio_bit_write(GPIOB, GPIO_PIN_1, SET) 设置1

gpio_bit_write(GPIOB, GPIO_PIN_0, RESET) 设置0

相关推荐
点灯小铭6 分钟前
基于单片机的硫化氢、氨气、甲烷、一氧化碳气体多种有害气体检测与声光报警系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
小李做物联网36 分钟前
【单片机毕设】c24基于单片机stm32蓝牙温室大棚物联网毕业设计
stm32·单片机·嵌入式硬件·物联网
电子工程师成长日记-C511 小时前
51单片机厨房环境参数监测(温湿度、烟雾、燃气、CO、甲醛)
单片机·嵌入式硬件·51单片机
9稳1 小时前
基于PLC的垃圾车自动收集装置控制系统设计
开发语言·网络·数据库·嵌入式硬件·plc
石头明月2 小时前
基于XC7A35T的DDR3 IP核使用
嵌入式硬件·fpga开发
czhaii2 小时前
8H/8G,32G12K128, Ai8051U的上电延时
单片机
C语言不精2 小时前
解决ESP出现MD5报错或验证芯片bug
嵌入式硬件·bug·esp32
平凡灵感码头2 小时前
一圈铜线,也能当按键?
单片机·嵌入式硬件
清风6666662 小时前
基于单片机的智能家居门铃系统设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计·期末大作业
坏柠3 小时前
我是如何从零开始,把 ESP32-S3 跑起来的
嵌入式硬件