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

相关推荐
DevinLGT1 小时前
6Pin Type-C Pin脚定义:【图文讲解】
人工智能·单片机·嵌入式硬件
小A1592 小时前
STM32完全学习——系统时钟设置
stm32·嵌入式硬件·学习
CoderBob2 小时前
【EmbeddedGUI】脏矩阵设计说明
c语言·单片机
陌夏微秋3 小时前
51单片机基础02 动态数码管显示-并串转换
arm开发·单片机·嵌入式硬件·51单片机·硬件工程·信息与通信·信号处理
面包板扎3 小时前
51单片机应用开发---LCD1602显示应用
单片机·嵌入式硬件·51单片机
面包板扎4 小时前
51单片机应用开发(进阶)---定时器应用(电子时钟)
单片机
好想有猫猫4 小时前
【51单片机】LCD1602液晶显示屏
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
陌夏微秋4 小时前
51单片机基础01 单片机最小系统
单片机·嵌入式硬件·51单片机·硬件工程·信息与通信
追梦少年时12 小时前
STM32-Flash闪存
stm32·单片机·嵌入式硬件·51单片机
weixin_4526006913 小时前
《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·智能充电枪