-
概述
- 本文使用STM32F10X,软件为Keil uVision5,仿真软件Proteus 8 Professional
- 电路图
- 实现代码
- 学习笔记
8个led
电路图
-
8个led亮灭实现代码
实现代码
//8¸öledÈ«ÁÁÈ«Ãð
#include "stm32f10x.h"
int main()
{
GPIO_InitTypeDef star;
//配置开启GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//设置GPIO输出模式
//stm32F1提供了4种输出模式(推挽输出、开漏输出 、复用推挽输出 、复用开漏输出)和3种输出速度;一般配置LED采用推挽输出;
star.GPIO_Pin =GPIO_Pin_All;
star.GPIO_Speed =GPIO_Speed_50MHz;设置IO速率
star.GPIO_Mode =GPIO_Mode_Out_PP;//设置推挽输出模式
//初始化
GPIO_SetBits(GPIOB,GPIO_Pin_All);
GPIO_Init(GPIOB,&star);
//第一种方法
GPIO_Write(GPIOB,0xff00);
//第二种方法
while(1)
{
// GPIO_ResetBits(GPIOB,GPIO_Pin_8);
// GPIO_ResetBits(GPIOB,GPIO_Pin_9);
// GPIO_ResetBits(GPIOB,GPIO_Pin_10);
// GPIO_ResetBits(GPIOB,GPIO_Pin_11);
// GPIO_ResetBits(GPIOB,GPIO_Pin_12);
// GPIO_ResetBits(GPIOB,GPIO_Pin_13);
// GPIO_ResetBits(GPIOB,GPIO_Pin_14);
// GPIO_ResetBits(GPIOB,GPIO_Pin_15);
//
}
}
-
8个led闪烁实现代码
实现代码
#include"stm32f10x.h"
void Delay(unsigned int count)
{
unsigned int i;
for(;count!=0;count--)
{
i=5000;
while(i--);
}
}
int main()
{
GPIO_InitTypeDef strs;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
strs.GPIO_Pin = GPIO_Pin_All;
strs.GPIO_Speed = GPIO_Speed_50MHz;
strs.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&strs);
while(1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_All);
Delay(100);
GPIO_SetBits(GPIOB,GPIO_Pin_All);
Delay(100);
}
}
-
音频发生器
电路图
实现代码
#include "stm32f10x.h" void Delay(unsigned int count) //ÑÓʱº¯Êý { unsigned int i; for(;count!=0;count--) { i=5000; while(i--); } } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GIPOC时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PC5引脚配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //配置PC5为推免输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIOB速度为50MHz GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化PC5 GPIO_SetBits(GPIOC,GPIO_Pin_5); //PC5输出高电平,LED熄灭 while(1) { GPIO_ResetBits(GPIOC,GPIO_Pin_5); //PC5输出低电平 Delay(10); //延迟,保持低电平一段时间 GPIO_SetBits(GPIOC,GPIO_Pin_5); //PC5输出高电平 Delay(10); //延迟,保持高电平一段时间 } }
-
学习笔记
-
输入: 上拉输入,下拉输入,浮空输入,模拟输入
输出:通用推挽输出,通用开漏输出,复用推挽输出,复用开漏输出
首先开启GPIO时钟,然后设置GPIO输出模式为推挽输出,接着初始化led
GPIO_ResetBits(GPIOC,GPIO_Pin_0);//PAO=0 ,输出低电平
GPIO_SetBits(GPIOC,GPIO_Pin_0);//PAO=1,输出高电平
-