STM32学习之智能灯的实现 (STM32F103C8)

  在学完了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

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stm32f103c8t6智能是基于STM32F103C8T6芯片的智能系统。该系统使用LoRa模块进行无线通信,可以实时检测光照、温湿度、烟雾浓度、环境噪音以及人体感应等参数。通过与主机进行通信,主机可以设置的工作时间,并将工作时间发送给从机。从机根据亮度自动调节LED的亮度,在有人时光最亮。该系统还配备有OLED屏幕,可以显示温湿度、烟雾浓度和光照检测结果,同时也可以调整LED的亮度。 此外,智能系统中使用了光敏传感器GY-30,它是一种光敏电阻,通过将光信号转换为电信号来检测光照强度。光敏传感器在智能管理系统中起到了重要的作用,帮助系统实现自动调节光明暗的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【毕业设计】基于STM32智能设计与实现 - 物联网 嵌入式 单片机](https://blog.csdn.net/m0_71572576/article/details/125496301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [毕业设计 单片机stm32智能智能控系统 - LoRa远程通信](https://blog.csdn.net/m0_71572576/article/details/127276327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值