0


【STM32】学习笔记-江科大

【STM32】学习笔记-江科大

1、STM32F103C8T6的GPIO口输出

在这里插入图片描述

2、GPIO口输出

GPIO(General Purpose Input Output)通用输入输出口可配置为8种输入输出模式引脚电平:0V~3.3V,部分引脚可容忍5V输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
在这里插入图片描述

3、基本结构

在这里插入图片描述

4、常用函数

链接: https://blog.csdn.net/lonelypasserby/article/details/129144699

5、实例(接线图+实物图+函数)

5.1 LED闪烁

在这里插入图片描述

在这里插入图片描述

Delay

include "stm32f10x.h"/**
  * @brief  微秒级延时
  * @param  xus 延时时长,范围:0~233015
  * @retval 无
  */voidDelay_us(uint32_t xus){
    SysTick->LOAD =72* xus;//设置定时器重装值
    SysTick->VAL =0x00;//清空当前计数值
    SysTick->CTRL =0x00000005;//设置时钟源为HCLK,启动定时器while(!(SysTick->CTRL &0x00010000));//等待计数到0
    SysTick->CTRL =0x00000004;//关闭定时器}/**
  * @brief  毫秒级延时
  * @param  xms 延时时长,范围:0~4294967295
  * @retval 无
  */voidDelay_ms(uint32_t xms){while(xms--){Delay_us(1000);}}/**
  * @brief  秒级延时
  * @param  xs 延时时长,范围:0~4294967295
  * @retval 无
  */voidDelay_s(uint32_t xs){while(xs--){Delay_ms(1000);}}
#include"stm32f10x.h"// Device header#include"Delay.h"intmain(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0,(BitAction)0);Delay_ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0,(BitAction)1);Delay_ms(500);}}

5.2流水灯

在这里插入图片描述

#include"stm32f10x.h"// Device header#include"Delay.h"intmain(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//GPIO_Pin_1|GPIO_Pin_2。。。。
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){//GPIO_Write输出GPIO_Write(GPIOA,~0x0001);//0000 0000 0000 0001Delay_ms(100);GPIO_Write(GPIOA,~0x0002);//0000 0000 0000 0010Delay_ms(100);GPIO_Write(GPIOA,~0x0004);//0000 0000 0000 0100Delay_ms(100);GPIO_Write(GPIOA,~0x0008);//0000 0000 0000 1000Delay_ms(100);GPIO_Write(GPIOA,~0x0010);//0000 0000 0001 0000Delay_ms(100);GPIO_Write(GPIOA,~0x0020);//0000 0000 0010 0000Delay_ms(100);GPIO_Write(GPIOA,~0x0040);//0000 0000 0100 0000Delay_ms(100);GPIO_Write(GPIOA,~0x0080);//0000 0000 1000 0000Delay_ms(100);}}

在这里插入图片描述

5.3蜂鸣器

在这里插入图片描述

#include"stm32f10x.h"// Device header#include"Delay.h"intmain(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);// GPIO_ResetBits是一个重要的函数,//可以用于控制STM32芯片的GPIO端口输出电平。该函数通过重置指定GPIO端口//的某些引脚来实现设置GPIO端口输出电平的目的。该函数可用于许多应用场合,包括控制LED等应用。while(1){GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(700);}}

存在的函数:https://blog.csdn.net/only_a_Heroic_car/article/details/130067196
在这里插入图片描述

标签: 单片机 stm32

本文转载自: https://blog.csdn.net/qq_25743167/article/details/132568162
版权归原作者 AI从入门到实践 所有, 如有侵权,请联系我们删除。

“【STM32】学习笔记-江科大”的评论:

还没有评论