电赛菜鸟营培训(一)——STM32F103CB之LED控制
一、STM32F103C8 引脚分布

二、LED的共阴、共阳接法

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

限流电阻选择为470,在Multism中仿真,也需要接入,否则会出现闪烁情况。或者直接更改属性。
三、消除按钮的机械振动
1、键的特性
键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动过程 。
2、去抖动的方法

(1)硬件去抖动,主要是通过滤波电路。
(2)软件去抖动,延时函数。
四、按钮控制灯
1、一对一

每一个按键的电路是独立的,占用一条数据线 。这种键盘占用硬件资源多,适合少量按键的情况。
2、矩阵时(利用率提高一倍)

让D0,D1,D2,D3输出为0,
检测D4—D7有一个为0的时候,再检测D0—D3有一个为0,则确定矩阵中哪一个开关可以使用。
五、Keil环境下开发代码
#include "stm32f10x.h" //最基本的头文件引用
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h" void delay(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控制的更多相关文章
- 电赛菜鸟营培训(四)——STM32F103CB之ADC转换
一.ADC概念 实现模拟信号转换成数字信号就是这样子= = 二.代码框架 #include "stm32f10x.h" void delay(u32 kk) { while(kk- ...
- 电赛菜鸟营培训(三)——STM32F103CB之串口通信
一.串口通信概念 1.缩写 USART:Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步/异步接收和发送器 2.用处 (1)同步 ...
- 电赛菜鸟营培训(二)——STM32F103CB之中断控制
一.中断的概念 中断可以理解为一个有激励给它就会立马给你响应的一个东东.就是说在你执行main函数的内容时,当有这个触发时便会跳转到这个中断内存,执行这段代码. Attention: 1.中断的用法, ...
- 电赛菜鸟营培训(五)——OLED屏幕的使用
一.取模软件的使用 首先进行设置 然后可以生成显示这个字母的代码,列优先,先按列画8行,然后再继续画下一列.汉字为16*16,字母为8*8,对应生成相应个数的ox代码. 二.STM32烤写OLED # ...
- 电赛菜鸟营培训(零)——Keil环境搭建
一.Keil开发软件安装 1.安装keil软件 2.使用注册机进行破解 将方框内的ID号复制到注册机,然后得到License,放到最底下就可以完成了. 二.Keil工程搭建 表示参考数据手册,在这里建 ...
- TI MSP430工程配置及2019年电赛A题编程示例(使用430 F5529)
配置 第一步:右击工程,选择Options 第二步:在General Options的Target选项卡里选择对应的器件Device,这里是MSP430G2231 第三步:在Debugger里选择FE ...
- 【系列】关于NJUPT电赛自控方向第一次积分赛的总结
本人是NJUPT电子科学与技术专业大一摸鱼狗一枚.本博客旨在总结与分享个人准备电赛所学知识,同时也是为了防止遗忘,锻炼写文章的能力.目前电赛方向为自控方向.主要研究方向为单片机.图像处理.自动控制相关 ...
- ACM 五一杭电赛码"BestCoder"杯中国大学生程序设计冠军赛小记
对于这项曾经热爱的竞赛,不得不说这是我最后一年参加ACM比赛了,所以要珍惜每一次比赛的机会. 五一去杭电参加了赛码"BestCoder"杯中国大学生程序设计冠军赛,去的队伍包括了今 ...
- 电赛总结(四)——波形发生芯片总结之AD9854
一.特性参数 ·300M内部时钟频率 ·可进行频移键控(FSK),二元相移键控(BPSK),相移键控(PSK),脉冲调频(CHIRP),振幅调制(AM)操作 ·正交的双通道12位D/A转换器 ·超高速 ...
随机推荐
- (转)MFC的一些宏的整理 (DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE)
很早看了MFC的一些宏的实现,什么RUNTIME_CLASS, DECLARE_DYNAMIC, DECLARE_DYNCREATE,IMPLEMENT_DYNCREATE, etc,看了就烦,现在整 ...
- vsftpd的安装
好像linux下的服务的配置和文件分布都差不多, 如httpd, vsftpd, named. 都是: 在/etc/???下面进行配置???.conf, 然后在/var/???放置实际要处理的文件/目 ...
- js中的getAttribute方法使用示例
getAttribute()方法是一个函数.它只有一个参数——你打算查询的属性的名字,下面为大家介绍下其具体的使用 getAttribute()方法 至此,我们已经向大家介绍了两种检索特定元素节点 ...
- bootshrap会改变IE浏览器滚动条样式
在某个小网站的开发中 客户一直抱怨在IE11中网页右边滚动条不一样 后来发现在IE11中,有2个页面滚动条会自动隐藏,一开始以为是浏览器默认行为,改了overflow:scroll后也没有用.仔细观察 ...
- 搜狗2013年校园招聘研发类笔试试卷之C/C++类
今天无聊在网上搜了下今年各大NB IT公司的笔试题,搜到了搜狗的,只有扫描版的试卷没有电子版也没有答案,就拿来做了做,题目非常多,涉及到C/C++.Java.数据结构.Android.IOS.Java ...
- TopCoder SRM 590
第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement Fox Ciel is going to play Gomoku with her friend ...
- Mate7微信指纹支付来了 比Touch ID整合微信早一点
之前我们聊过微信将推指纹支付 "指付通"会与Touch ID整合吗这个话题,现在有国内厂商率先支持微信指纹支付,体验一下美国用户使用Apple Pay搭配Touch ID来实现便捷 ...
- dedecms发布文章时多个Tag间分割逗号自动变成英文逗号
dedecms发布文章时经常会添加多个Tag,我们输入汉字时总是喜欢使用全角的逗号,那么有没有办法使用JS脚本把输入的Tag间中文逗号变成英文逗号呢? dedecms发布文章时多个Tag间分割逗号自动 ...
- sql分组取第一条数据
sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * ...
- springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...