STM32实现一个简单电灯

新建工程的步骤

  • 建立工程文件夹,Keil中新建工程,选择型号
  • 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面
  • 的文件到工程文件夹
  • 工程里对应建立Start、Library、User等同名称的分组,然后将文件
  • 夹内的文件添加到工程分组里
  • 工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹
  • 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
  • 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash
  • Download里勾选Reset and Run

下面来说一下具体步骤:

一、新建工程

使用库函数的方式,需要准备一个STM32 库函数的压缩包

新建一个基于标准库的工程

新建一个文件夹叫工程模板放本次项目

固件库获取:

https://pan.baidu.com/s/1bRC6MWtC7jxyKTCUmBCnRQ?pwd=v4tw

然后找到:

固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3

\DeviceSupport\ST\STM32F10x\startup\arm下的就是STM32的启动文件

STM32程序就是从启动文件开始执行的。

将这些文件都拷贝到工程模板中,但是这样全放进去太乱了,可以新建一个文件夹叫start。

返回到STM32F10x目录

stm32f10x.h 是用来描述STM32有哪些寄存器和他对应的地址的。

system_stm32f10x.csystem_stm32f10x.h 是用来配置时钟的

STM32主频72MHZ,就是system文件里的函数配置的。

将这三个文件复制下来也粘贴到start文件夹下。

这两个cm3-(Cortex-M3)文件就是内核的寄存器描述.当然他还带了一些内核的配置函数,所以多了个:c文件,我们把它俩一并复制下来也粘贴到start文件夹下。
到此为止工程的必要文件就复制完成了。

返回Keil软件

双击start

点击All files

选择启动文件

按住CTRl选择这三个然后点击Add

然后点击close。

这个图标代表只读文件。

最后在工程选项里添加上这个文件夹的头文件路径,否则软件找不到.h文件

点击

添加main函数看工程是否可行。

进入工程模板文件夹,新建文件夹叫User.

右键添加组

改名为User

右键添加新文件

界面右击

然后编写一个main函数,这里注意main函数是一个int型返回值,void参数的函数。还有文件的最后一行必须要是空行,要不然会报警告。

#include "stm32f10x.h"                  // Device header

int main(void)
{
    while(1)
    {

    }
}

点击构建,编译并建立工程

二、两种电灯方法

寄存器

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC->APB2ENR = 0x00000010;//打开GPIOC的时钟
	GPIOC->CRH = 0x00300000;
	//GPIOC->ODR = 0x00000000;//亮
	GPIOC->ODR = 0x00002000;//灭
	while(1)
	{
		
	}
} 

库函数

新建库文件夹

misc是内核的库函数,其他的是内核外的外设库函数。

全部复制到Library中。

这些是库函数的头文件件全部复制到Library中。

这三个复制到工程的User下。

宏定义方法:

滑到8296行

库函数的工程建法:

### 回答1: 控制程序。 很高兴回答您的问题。以下是一个简单stm32电灯控制程序: #include "stm32f10x.h" int main(void) { GPIO_InitTypeDef GPIO_InitStructure; // 使能GPIOB时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 配置GPIOB.5为推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); while (1) { // 点亮LED GPIO_SetBits(GPIOB, GPIO_Pin_5); // 延时 for (int i = ; i < 100000; i++); // 熄灭LED GPIO_ResetBits(GPIOB, GPIO_Pin_5); // 延时 for (int i = ; i < 100000; i++); } return ; } ### 回答2: STM32电灯是一种基于STM32微控制器的智能电灯系统。 该电灯系统由以下几个主要组件组成: 1. STM32微控制器:它是整个系统的核心,负责控制电灯的开关、调光和调色等功能。STM32微控制器具有高性能、低功耗和可扩展性,使得电灯系统能够高效可靠地工作。 2. 光敏传感器:用于感知环境光强度。通过监测光强度的变化,电灯系统可以自动调节灯光亮度,以确保室内光线始终明亮舒适。 3. 触摸键盘:用于手动控制电灯的开关、调光和调色。通过触摸键盘,用户可以方便地进行各种操作,而无需额外的遥控器或开关。 4. RGB LED灯珠:使用RGB LED灯珠作为光源,可以产生不同颜色的光线。用户可以通过电灯系统来调节灯光的颜色,以适应不同的环境需求,如温馨的黄光、清凉的蓝光等。 5. 通信模块:电灯系统可以通过无线通信模块与其他智能设备进行连接,实现更广泛的智能家居控制。用户可以通过手机应用程序或智能音箱等设备远程控制电灯实现智能化的家居体验。 通过以上的组件和功能,STM32电灯系统实现了传统电灯与智能化技术的有机结合。它不仅提供了方便的手动控制方式,同时也支持自动化的光线调节和与其他智能设备的联动,为用户带来更加智能、舒适和高效的照明体验。 ### 回答3: STM32是一种高性能8位或32位微控制器,具有广泛的应用领域。下面以300字的中文回答,描述如何使用STM32控制电灯。 首先,我们需要针对STM32编写一段代码,能够实现电灯的控制。这段代码需要使用STM32的GPIO(通用输入输出)功能来控制电灯。 在代码中,我们首先要初始化相关的GPIO引脚,以便能够连接电灯。这些引脚必须配置为输出模式,以便控制电灯的开关。 然后,我们可以使用一个循环结构,来不断检测用户输入信号的状态。比如,我们可以使用一个开关按钮作为触发器,当按下按钮时,电灯亮起;当再次按下按钮时,电灯熄灭。代码可以通过读取GPIO引脚的状态来实现这一功能。 在循环结构中,我们可以使用条件语句来判断用户输入信号的状态。如果检测到按钮按下的信号,我们就将相关的GPIO引脚电平设置为高电平,从而点亮电灯。如果检测到按钮释放的信号,我们则将相关的GPIO引脚电平设置为低电平,从而熄灭电灯。 当代码编写完成后,我们还需将其编译并烧写到STM32微控制器的存储器中。这样,微控制器就会根据代码的指令执行相应的操作。 总结起来,通过编写合适的代码,配合使用STM32的GPIO功能,我们可以实现电灯的控制。无论是开灯还是关灯,都可以通过按下按钮来实现。这种方式不仅简单方便,而且灵活易用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了一li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值