基于STM32实现流水灯【Proteus仿真】

详情更多 wechat:嵌入式工程师成长日记

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247485624&idx=1&sn=4e553234c2624777409bd2067a07aad8&chksm=cf430de0f83484f6189b119d9d83ea6e6f2a85d13afaa04d218483918231c38e6382d3007061&token=767249363&lang=zh_CN#rdicon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247485624&idx=1&sn=4e553234c2624777409bd2067a07aad8&chksm=cf430de0f83484f6189b119d9d83ea6e6f2a85d13afaa04d218483918231c38e6382d3007061&token=767249363&lang=zh_CN#rd

通过配置寄存器初始化LED:

代码:

//LED IO初始化void LED_Init(void){  RCC->APB2ENR|=1<<4;    //使能PORTC时钟  GPIOC->CRL&=0X00000000;//清零  GPIOC->CRL|=0X33333333;//推挽50MHz输出  GPIOC->ODR=0X00FF;      //输出高}

①CRL寄存器(端口配置低寄存器):

图片

②APB2外设时钟使能寄存器:

图片

③ODR端口输出数据寄存器:

图片

总结:


STM32每个IO端口都有7个寄存器控制:

  1. 1.两个32位 端口配置寄存器-- CRL和CRH
    2.两个32位 数据寄存器-- IDR和ODR
    3.一个32位 置位/复位寄存器-- BSRR
    4.一个16位 复位寄存器-- BRR
    5.一个32位 锁存寄存器-- LCKR

  2. 主程序(main.c):

#include "main.h"void KEY_IO_Init(void);//按键初始化
void EXTIx_Init(void);//外部中断
void EXTI0_IRQHandler(void);
void EXTI1_IRQHandler(void);
//LED IO初始化
void LED_Init(void)
{RCC->APB2ENR|=1<<4;    //使能PORTC时钟GPIOC->CRL&=0X00000000;//清零GPIOC->CRL|=0X33333333;//推挽50MHz输出GPIOC->ODR=0X00FF;      //输出高
}int main(void){uint8_t count_i;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断向量分组 2KEY_IO_Init();EXTIx_Init();//外部中断初始化while(1){  LED_Init();//初始化与LED连接IO口while(1){  }}return 0;
}void KEY_IO_Init(void)//按键初始化
{GPIO_InitTypeDef  GPIO_InitStructure;   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能PB端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;         //按键输入端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;     GPIO_Init(GPIOB, &GPIO_InitStructure);  
}  
void EXTIx_Init(void)//外部中断
{NVIC_InitTypeDef NVIC_InitStructure;  //NVIC寄存器结构体变量EXTI_InitTypeDef EXTI_InitStructure;  //外部中断相关寄存器结构体变量RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能IO复用功能时钟GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0); //GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1); //GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource2); ////配置外部中断4相关寄存器EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1|EXTI_Line2;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_Init(&EXTI_InitStructure);//中断通道使能NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//使能外部中断通道0NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //设置抢占优先级2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;//设置响应优先级2NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//中断通道使能NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;//使能外部中断通道1NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //设置抢占优先级2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;//设置响应优先级2NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//中断通道使能NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//使能外部中断通道2NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //设置抢占优先级2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;//设置响应优先级2NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}void EXTI0_IRQHandler(void)
{int i;for(i=0;i<8;i++){GPIOC->ODR=~(1<<i);//输出低delay_ms(500);}GPIOC->ODR=0xff;EXTI_ClearITPendingBit(EXTI_Line4);//清除中断挂起标志位
}
void EXTI1_IRQHandler(void)
{int i;for(i=8;i>=0;i--){GPIOC->ODR=~(1<<i);//输出低delay_ms(500);}GPIOC->ODR=0xff;EXTI_ClearITPendingBit(EXTI_Line4);//清除中断挂起标志位
}

  1. 运行效果:

    图片

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「React Native」为什么要选择 React Native 作为的跨端方案

文章目录 前言一、常见因素二、举个栗子2.1 项目背景2.2 为什么选择 React Native2.3 项目实施2.4 成果总结 前言 没有完美的跨端技术&#xff0c;只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 一、常见因素 共享代码库&#xff1a; React Native 允许开发者编写…

第⑮讲:Ceph集群管理与监控操作指南

文章目录 1.查看集群的状态信息2.动态的查看集群的状态信息3.查看集群的利用率4.查看OSD的资源利用率5.查看OSD的列表6.查看各组件的状态7.查看集群的仲裁信息8.查看/修改集群组件sock的配置参数 1.查看集群的状态信息 通过集群状态信息可以看到集群的健康状态、各个组件的运行…

PMP新版考试也要复习49个过程?如何复习更高效?

PMP中有五大过程组、十大知识领域&#xff0c;共计49个子过程&#xff0c;那么如何才能快速的记住这49个子过程&#xff0c;可以参考这篇文章理解加深记忆。 记忆需要花费时间&#xff1a;30分钟 记忆持续时间&#xff1a;永久 接下来按照思路进行 场景&#xff1a;大家都熟…

粮油包装生产线的未来趋势:智能、环保与可持续发展

在当今世界&#xff0c;科技进步日新月异&#xff0c;智能化、环保和可持续发展已成为各行各业关注的焦点。粮油包装生产线作为食品产业链的重要环节&#xff0c;其未来发展趋势同样离不开这三大主题。星派将探讨粮油包装生产线的未来趋势&#xff0c;并展望其在智能、环保与可…

详解俄罗斯社媒平台VK广告推广如何开户?VK代理开户、费用、代运营流程

俄罗斯的VK&#xff08;VKontakte&#xff09;是当地常用的社交媒体平台&#xff0c;对于想要在俄罗斯市场推广产品的企业来说&#xff0c;VK广告投放是一个有效的渠道。以下是关于如何在VK上进行广告推广的开户流程、费用和代运营流程的详解&#xff1a; VK广告推广开户流程 …

海康Visionmaster-常见问题排查方法-启动阶段

VM试用版启动时&#xff0c;弹窗报错&#xff1a;加密狗未安装或检测异常&#xff1b;  问题原因&#xff1a;安装VM 的时候未选择软加密&#xff0c;选择了加密狗驱动&#xff0c;此时要使用软授权就出现了此现象。  解决方法&#xff1a; ① 首先确认软加密驱动正确安装…

机器学习入门:玩转sklearn库,AI写作

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

达芬奇调色:色彩理论入门

写在前面 整理一些达芬奇调色的笔记博文内容涉及&#xff1a; 一级调色是什么&#xff0c;以及 调色素材格式 log&#xff0c;raw&#xff0c;rec709 简单认知理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#…

基于SpringBoot+Vue的企业资产管理系统设计与实现

1、系统演示视频&#xff08;演示视频&#xff09; 2、需要请联系

hexo配置教程、主题使用及涉及的技术学习

一、背景 最近,一直想做一个属于自己的网站.可以从零开始搭建一个网站,顺便可以把日常中学到的技术用于实战,还可以顺便记录自己的所思所感,记录成长的过程. 方案 一开始的方案是从零开始,模仿常见个人博客的设计,基于vueSpringbootMySQL的去实现网站. 新建项目之后,发现vu…

C/C++ 入门(7)string类(STL)

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 请多多指教&#xff01; 目录 一、标准库中的string 1、了解 2、string类常用接口说明 1、常见的构造函数 2、容量操作 ​编辑 3、访问及遍历操作 4、修改操作 5、非成员函数 二、string类实现 …

如何训练一个大语言模型(LLMs)

目录 前言大语言模型 Vs机器学习模型训练过程步骤1&#xff1a;数据策划&#xff08;Data Curation)步骤2&#xff1a;格式化与预处理步骤3&#xff1a;训练模型步骤4&#xff1a;模型评估 LLM Leaderboard[LLM Leaderboard 2024](https://www.vellum.ai/llm-leaderboard)[Open…

软考 系统架构设计师系列知识点之大数据设计理论与实践(13)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之大数据设计理论与实践&#xff08;12&#xff09; 所属章节&#xff1a; 第19章. 大数据架构设计理论与实践 第4节 Kappa架构 19.4.2 Kappa架构介绍 Kappa架构由Jay Kreps提出&#xff08;Lambda由Storm之父Nayhan M…

智慧水务是什么样的?如何打造智慧水务大屏?

在信息化和数字化快速发展的今天&#xff0c;智慧水务作为城市供水管理的重要组成部分&#xff0c;正变得越来越重要。智慧水务大屏作为智慧水务系统的可视化核心&#xff0c;不仅提升了水务管理的效率&#xff0c;而且通过数据的实时监控和分析&#xff0c;为决策者提供了强有…

持续发力新能源新材料产业,企企通 ×『瑞翔新材』SRM项目启动,积极推动企业发展新质生产力

近日&#xff0c;南通瑞翔新材料有限公司&#xff08;以下简称“瑞翔新材”&#xff09;与企企通达成战略合作&#xff0c;并成功召开SRM项目启动会&#xff0c;瑞翔新材与企企通高层领导、项目负责人及项目组成员共同出席此次启动会。 本次项目建设&#xff0c;企企通将助力瑞…

微服架构基础设施环境平台搭建 -(六)Kubesphere 部署Redis服务 设置访问Redis密码

微服架构基础设施环境平台搭建 -&#xff08;六&#xff09;Kubesphere 部署Redis服务 & 设置访问Redis密码 微服架构基础设施环境平台搭建 系列文章 微服架构基础设施环境平台搭建 -&#xff08;一&#xff09;基础环境准备 微服架构基础设施环境平台搭建 -&#xff08;二…

矿产资源管理系统:开启智慧矿业新篇章

项目背景 在全球经济发展的大背景下&#xff0c;矿产资源作为工业的“粮食”和“血液”&#xff0c;其合理开发与有效管理对于国家的经济发展、能源安全和工业稳定供应具有不可替代的作用。然而&#xff0c;随着资源的日益紧张和环境保护要求的提高&#xff0c;传统的矿产资源…

canvas 学习

最近的项目涉及到 canvas 相关的知识&#xff0c;就在网站上找资源先大概了解一下&#xff0c;然后再细细研究。 看到了一篇 “canvas详细教程” 的资源&#xff0c;感觉十分不错&#xff0c;就分享给大家&#xff1a; canvas详细教程! ( 近1万字吐血总结)这期是潘潘整理的万…

Recommended Azure Monitors

General This document describes the recommended Azure monitors which can be implemented in Azure cloud application subscriptions. SMT incident priority mapping The priority “Blocker” is mostly used by Developers to prioritize their tasks and its not a…

第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略_北方的郎队

关联比赛: 第二届阿里巴巴大数据智能云上编程大赛-智联招聘人岗智能匹配 查看更多内容&#xff0c;欢迎访问天池技术圈官方地址&#xff1a;第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略_北方的郎队_天池技术圈-阿里云天池