【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
版权归原作者 AI从入门到实践 所有, 如有侵权,请联系我们删除。