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

相关推荐
电院工程师3 小时前
SIMON64/128算法Verilog流水线实现(附Python实现)
python·嵌入式硬件·算法·密码学
Shang180989357264 小时前
T41LQ 一款高性能、低功耗的系统级芯片(SoC) 适用于各种AIoT应用智能安防、智能家居方案优选T41L
人工智能·驱动开发·嵌入式硬件·fpga开发·信息与通信·信号处理·t41lq
BreezeJuvenile4 小时前
外设模块学习(8)——HC-SR04超声波模块(STM32)
stm32·单片机·嵌入式硬件·学习·超声波测距模块·hc-sr04
安庆平.Я7 小时前
STM32——定时器
stm32·单片机·嵌入式硬件·定时器
ACP广源盛139246256737 小时前
(ACP广源盛)GSV2231---DisplayPort 1.4 MST 到 HDMI 2.0/DP/Type-C 转换器(带嵌入式 MCU)
c语言·开发语言·单片机·嵌入式硬件·音视频·mst
电鱼智能的电小鱼8 小时前
基于电鱼 ARM 边缘网关的智慧工地数据可靠传输方案——断点续传 + 4G/5G冗余通信,保障数据完整上传
arm开发·人工智能·嵌入式硬件·深度学习·5g·机器学习
范纹杉想快点毕业8 小时前
12个月嵌入式进阶计划ZYNQ 系列芯片嵌入式与硬件系统知识学习全计划(基于国内视频资源)
c语言·arm开发·单片机·嵌入式硬件·学习·fpga开发·音视频
NEU-UUN9 小时前
1.2.STM32简介——全程手敲板书
stm32·单片机·嵌入式硬件
三佛科技-134163842129 小时前
全自动削皮机方案,果蔬去皮机/削皮机MCU控制方案开发设计
单片机·嵌入式硬件
应用市场9 小时前
基于STM32的多模态智能门锁系统设计与实现
stm32·单片机·嵌入式硬件