电赛菜鸟营培训(一)——STM32F103CB之LED控制

摘要:
限流电阻选择为470,在Multism中仿真,也需要接入,否则会出现闪烁情况。软件去抖动,延时函数。
一、STM32F103C8 引脚分布

image

二、LED的共阴、共阳接法

image

这里应该是七段数码管的接法。

image

限流电阻选择为470,在Multism中仿真,也需要接入,否则会出现闪烁情况。或者直接更改属性。

三、消除按钮的机械振动

1、键的特性

键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动过程 。

2、去抖动的方法

image

(1)硬件去抖动,主要是通过滤波电路。

(2)软件去抖动,延时函数。

四、按钮控制灯

1、一对一

image

每一个按键的电路是独立的,占用一条数据线 。这种键盘占用硬件资源多,适合少量按键的情况。

2、矩阵时(利用率提高一倍)

image

让D0,D1,D2,D3输出为0,

检测D4—D7有一个为0的时候,再检测D0—D3有一个为0,则确定矩阵中哪一个开关可以使用。

五、Keil环境下开发代码
#include "stm32f10x.h"
//最基本的头文件引用
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
voiddelay(u32 kk)
{
  while(kk--);
}
int main(void)
{
    u8 led = 0; //led的tag值
    //输出端口配置
    GPIO_InitTypeDef GPIO_InitStructure;  //声明一个结构体,在这里的思路是通过对一个结构体进行设置,然后再进行引入初始化,个人的观点就是作为构造函数的形参
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//   首先使这个端口开启
    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;   //选取管脚          
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;          //选取模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;    //设置高低电平的切换速率
    GPIO_Init(GPIOA, &GPIO_InitStructure);           //
    //输入端口的配置
    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_SetBits(GPIOA, GPIO_Pin_0);   //在输入输出这种第一功能下的对位置数的函数方法
  while(1)
  {  
        if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1) //判断是否按下去
{
            delay(5000);      //延时,消除按下去的抖动
            while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1);      //为判断松手的死循环
            delay(5000);       //延时,消除松手的抖动 
//对灯的输出进行异或操作
            led = 1 -led;    
            if(led)
                GPIO_ResetBits(GPIOA, GPIO_Pin_0);
            else
                GPIO_SetBits(GPIOA, GPIO_Pin_0);
        }
  }
}

免责声明:文章转载自《电赛菜鸟营培训(一)——STM32F103CB之LED控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇zookeeper客户端命令行查看dubbo服务的生产者和消费者使用自增主键、UUID的优缺点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

按键检测GPIO输入

1. 项目   通过按键控制开关LED灯,按下按键灯亮,再按一下灯灭。 2. 代码   mian.c    #include "stm32f10x.h" //相当于51单片机中的 #include <reg51.h> #include "bsp_key.h" #include "bsp_led.h" void Delay(uint32_...

Pyboard基础功能探索---按键、GPIO

板载按键KEY   1.获取板载按键引脚名称 >>> help(pyb.Pin.board) object <class 'board'> is of type type ... SW -- Pin(Pin.cpu.B3, mode=Pin.IN, pull=Pin.PULL_UP) ... 板载用户按键别名:SW,芯片定义...

树莓派 HC-SRO4超声波测距模块的使用

先上个图 这个模块的针脚跟之前玩的那三个有所区别,除了VCC和GND两个针脚,还多了两个Trig和Echo针脚,分别是输出和输入,Trig我接的是20针脚,Echo是21 该模块的工作原理为,先向TRIG脚输入至少10us的触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则ECHO输出高电平回响信号。回响信号的脉冲...

EC20模块(mdm9607)复用pin脚当作普通gpio的设置方法

修改pin37~40,当作普通gpio的方法如下:   下面代码截图需要确认是否一样,如不一样请修改:   修改pin41~42 ,当作普通gpio方法如下:   Pin24~27,当作普通gpio方法如下:         Pin136不建议修改。 Pin136的用法,请参考以下文件/etc/init.d/wlan:  ...

STM32学习笔记(八) SPI总线(操作外部flash)

1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线;它工作在主从方式,常规需要至少4根线才能够正常工作。SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯中,具有广泛的应用。SPI总线由四个接口构成: CS :片选端,由主设备控制 MISO:主设备输入,从设备输出 MOSI:主设备输出,从设备输入 SCK :时...

基於tiny4412的Linux內核移植 --- 实例学习中断背后的知识(1)

作者:彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台tiny4412 ADK Linux-4.9   概述前面几篇博文列举了在有设备树的时候,gpio中断的用法示例。下面我们尝试分析一下Linux内核是如何做到的,如果哪写的有问题,欢迎大家批评指正,谢谢。 还是以GPIO中断为例分析,对于tiny4412,gpi...