基于STM32F103C8T6寄存器模式电灯

文章介绍了如何使用STM32F103C8T6微控制器通过寄存器模式控制电灯系统,包括硬件(微控制器、电源、继电器和电灯)和软件(KeilC编译器、库文件)部分。系统流程涉及初始化、读取传感器数据以及控制电灯开关。提供的代码示例展示了如何配置GPIO口、定时器及中断来实现电灯的自动控制。
摘要由CSDN通过智能技术生成

控制系统

STM32F103C8T6是一种微控制器,可以使用寄存器模式来控制电灯系统。下面是一个基于该芯片的电灯控制系统的示例:

硬件部分:

- STM32F103C8T6微控制器
- 电源模块
- 继电器模块
- 电灯

软件部分:

- Keil C编译器
- STM32F103C8T6的库文件

系统流程:

1. 初始化STM32F103C8T6微控制器

- 设置GPIO口为输出模式
- 设置时间基准
- 初始化继电器模块

2. 读取传感器状态

- 读取传感器数据
- 判断是否需要控制电灯

3. 控制电灯状态

- 控制继电器开关
- 控制电灯开关

代码实现:

这里的代码演示了如何使用寄存器模式来控制STM32F103C8T6微控制器。

#include "stm32f10x.h"

void delay_ms(uint32_t ms){
    SysTick->LOAD = ms * 9000;
    SysTick->VAL = 0;
    SysTick->CTRL = 1;
    while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
    SysTick->CTRL = 0;
}

void Init_GPIO(void){
    RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
    GPIOB->CRL &= ~GPIO_CRL_CNF3;
    GPIOB->CRL |= GPIO_CRL_MODE3;
}

void Init_Timer(void){
    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
    TIM2->ARR = 50000;
    TIM2->PSC = 36000;
    TIM2->DIER |= TIM_DIER_UIE;
    TIM2->CR1 |= TIM_CR1_CEN;
    NVIC_EnableIRQ(TIM2_IRQn);
}

void TIM2_IRQHandler(void){
    if(TIM2->SR & TIM_SR_UIF){
        TIM2->SR &= ~TIM_SR_UIF;
        GPIOB->ODR ^= GPIO_ODR_ODR3;
    }
}

int main(void){
    Init_GPIO();
    Init_Timer();
    while(1){
        delay_ms(2000);
    }
}

以上代码演示了如何使用SysTick定时器来延时2秒,然后使用GPIO口控制继电器模块,最后控制电灯的开关状态。

总结

基于STM32F103C8T6微控制器的寄存器模式电灯控制系统,可以通过GPIO口和继电器模块来控制电灯的开关状态。这样的系统可以用于智能家居,实现自动化控制。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

科创工作室li

你的鼓励将是大学生的创作动力

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

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

打赏作者

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

抵扣说明:

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

余额充值