在学完了STM32F4的芯片后,尝试着独立开发一个智能灯小项目,大概功能就是:KEY2按键长按实现开关机,短按切换模式,分别为自动模式和手动模式,自动模式下会根据光照强度改变灯的亮度,手动模式用KEY1来改变灯的亮度,分为6档,按下KEY1逐渐变亮,第六次关闭。开关机蜂鸣器会发出提示音。使用的是STM32F103C8这款芯片。

在开发之前要搭建环境,STM32F103的芯片因为FLASH的大小不同分为了不同型号,不同型号所需的启动文件也不同

startup_stm32f10x_cl.s                  ------------  互联型的STM32F105xx,STM32F107xx

startup_stm32f10x_hd.s                -------------大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s           -------------大容量的STM32F100xx
startup_stm32f10x_ld.s                --------------小容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_ld_vl.s           ---------------小容量的STM32F100xx
startup_stm32f10x_md.s              ---------------中容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_md_vl.s         ----------------中容量的STM32F100xx
startup_stm32f10x_xl.s                ----------------超大容量FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx

一、GPIO的配置

按照之前的配置步骤:

1.看原理图确定引脚    ----原理图

LED0,PB3

2.看通用功能是否是IO的功能  -----数据手册

通用功能是作为JTDO(调试功能)使用的,如果我们要将PB3作为通用IO口的功能,需要重映射,把IO口的功能映射到PB3上。

根据图中的内容看出我们需要将AFIO_MAPR这个寄存器的SWJ_CFG这个位配置成相应的功能,而使能这个寄存器又要打开相应的时钟

1、使能AFIO这个功能的时钟

2、配置SWJ_CFG这个位为相应的模式

这个寄存器是在APB2这个时钟上,只需要将第0位置为1就可以使能这个寄存器了,

2、配置AFIOP_MAPR寄存器

因为在作IO口的功能时还需要用到调试功能,所以在这里将010写入SWJ_CFG这个寄存器就将IO口的功能映射IO口上了

3.配置工作模式

寄存器和STM32F4的有所不同,低寄存器配置的时相应端口的0~7八个管脚,高寄存器控制8~15八个管脚。

每个管脚由四个位控制,PB3作为灯的IO口,应该配置成通用推挽输出模式,在MODE位中写入01,10,11三个值都行,CNF位中写入00,因为CRL和CRH这两个寄存器的复位值位0x44444444所以使用前要将对应位清零,具体操作为

RCC->APB2ENR |= (1<<2);

GPIOB->CRL &=~ (0xf<<12);
GPIOB->CRL |= (3<<12);
GPIOB->ODR |= (1<<3);

然后通过ODR寄存器改变输出的信号就可以控制led灯了。

按键,热释电传感器的配置都是用作输出,只需要改变相应的为就可以了。(关于GPIO详细配置看另一篇文章)

转载于:https://www.cnblogs.com/whpl22-Blog/p/11293979.html

STM32学习之智能灯的实现 (STM32F103C8)相关推荐

  1. 智能灯控制页面用HTML编写,一种基于STM32的智能灯控制系统的制作方法

    本发明涉及电子系统控制领域,具体是一种基于STM32的智能灯控制系统. 背景技术: 随着我国教育业的发展,学校照明用电量急速增加,电能损失也呈现出增大的趋势.目前,国内外照明自动控制装置基本都采用被动 ...

  2. 【STM32学习笔记-点亮LED灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...

  3. 阿里云HaaS100物联网开发板学习笔记(六)做个智能灯---一个完整的开发例子

    摘要:本篇文章将前期几个专题综合起来,基于阿里云HaaS100的新固件设计制作一个智能灯.这个智能灯由云平台.手机APP端和设备端组成,基本上涵盖了一个物联网小项目所需的主要步骤. 目录 1.在阿里云 ...

  4. 强化学习在智能交通灯中的应用

    IntelliLight: a Reinforcement Learning Approach for Intelligent Traffic Light Control introduction 这 ...

  5. STM32学习 3:GPIO管脚配置与第一个STM32实验:LED灯闪烁

    STM32学习 3:GPIO管脚配置与第一个STM32实验:LED灯闪烁 1,GPIO管脚简介与配置 1.1GPIO框图 1.2GPIO不同模式 1.3 GPIO寄存器 1.4 GPIO库函数配置 2 ...

  6. 【STM32学习笔记-LED呼吸灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.呼吸灯原理 二.呼吸灯代码 1.main.c 2.led.c 3.led.h 三.代码分析 一.呼吸灯原理 占空比:占 ...

  7. 【毕业设计】基于ZigBee的智能灯控系统 -物联网 单片机 stm32

    文章目录 1 简介 2 系统结构 系统功能 相关器件 Zigbee芯片 CC2530 LED发光二极管 人体红外感应模块 光敏电阻传感器 3 实现效果 5 相关部分代码 6 最后 1 简介 Hi,大家 ...

  8. STM32实现LED流水灯

    文章目录 一.实验原理 1.STM32F103C8T6简介 2.地址映射 3.寄存器映射 4.GPIO端口初始化设置 1.时钟配置 2.输入输出模式和输出速率设置 二.C语言实现LED流水灯 1.流水 ...

  9. 基于STM32单片机的智能书桌设计与实现

    研究结果表明,学生的读写姿势不正确率高达70%甚至85%以上[1].不良的读写姿势.不合适的光照条件会令学生不停地调整眼睛的睫状肌,容易降低睫状肌调节能力,进而导致近视[2].从长远看,不良的读写姿势 ...

最新文章

  1. Spring 的优秀工具类盘点---转
  2. 非常抱歉,pmcaff网站硬盘故障,无法访问,努力恢复ing……
  3. Arrays.asList 使用细节
  4. 计算机ip地址未修复连接不了无线网络,本地连接没有有效的ip配置,教您修复本地连接没有有效的ip配置...
  5. 698. Partition to K Equal Sum Subsets
  6. TensorFlow 全网最全学习资料汇总之TensorFlow的技术应用
  7. 判断闰年(信息学奥赛一本通-T1055)
  8. 波卡跨链交易协议RAI Finance将接入Bounce Finance实现IDO代币发行
  9. win7能装mysql_win764位系统怎么安装mysql
  10. CSS盒模型(Box Model)
  11. (2.1)【经典木马-冰河木马】详细介绍,原理、使用方法
  12. php把buffer转化为图片_PHP简单实现图片格式转换(jpg转png,gif转png等)
  13. 推箱子游戏(图形版)
  14. KEIL arm C51中常量变量函数的绝对地址设定
  15. BCLinux7.6
  16. A component required a bean of type ‘com.yida.data.religion.common.dao.AddressInfoMapper‘ that could
  17. 蓝桥杯Python组的规矩
  18. 工具 - 分解TexturePacker导出的大图
  19. 各种文件后缀名对应content-type
  20. 网聊记录-看看他的口才

热门文章

  1. composer 指定PHP版本
  2. 《生物信息学:导论与方法》----导论与历史----听课笔记(一)
  3. HTML 网页制作 网易邮箱登录页面 关键代码
  4. 分类统计字符—Python
  5. 回溯法解决n皇后问题
  6. 关于uniapp编译小程序 引入全局scss问题解决方案
  7. iOS 人机交互设计(开发)指南及一些综合知识整合
  8. php微信公众号开发之网页授权
  9. 短视频seo获客系统,短视频SEO,短视频seo推广
  10. 朗强:HDMI视频画面分割器基本工作原理和性能