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

相关推荐
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11015 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元5 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133975 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315205 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Alaso_shuang5 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟5 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126915 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315205 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机
星马梦缘5 天前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动