设为首页
收藏本站
开启辅助访问
登录
注册
只需一步,快速开始
首页
BBS
在线充值
搜索
工控币获得方法
联系方式
搜索
搜索
本版
帖子
用户
工控论坛
»
首页
›
电子技术
›
STM32/8
›
STM32外部中断实现键控led Proteus仿真程序
返回列表
发新帖
STM32外部中断实现键控led Proteus仿真程序
[复制链接]
3
|
0
|
2020-6-4 16:15:57
|
显示全部楼层
|
阅读模式
外部中断实现led键控led灯实验
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
外部中断.7z
(234.04 KB, 售价: 1 工控币)
2020-6-4 16:15 上传
点击文件名下载附件
部分源码
#include"stm32f10x.h"
#define Led_Red_On GPIO_ResetBits(GPIOC,GPIO_Pin_1)
#define Led_Red_Off GPIO_SetBits(GPIOC,GPIO_Pin_1)
#define Led_Red_Toggle GPIOC -> ODR ^= GPIO_Pin_1
#define Led_Green_On GPIO_ResetBits(GPIOC,GPIO_Pin_2)
#define Led_Green_Off GPIO_SetBits(GPIOC,GPIO_Pin_2)
#define Led_Green_Toggle GPIOC -> ODR ^= GPIO_Pin_2
#define Led_Blue_On GPIO_ResetBits(GPIOC,GPIO_Pin_3)
#define Led_Blue_Off GPIO_SetBits(GPIOC,GPIO_Pin_3)
#define Led_Blue_Toggle GPIOC -> ODR ^= GPIO_Pin_3
void Blue_Flash() //蓝灯闪烁
{
int i;
void delay(unsigned int t);
for(i=3;i>0;i--)
{
Led_Blue_Toggle;delay(100000);
}
}
void Led_Configration()
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStruct.GPIO_Pin = (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStruct);
Led_Red_Off;
Led_Green_Off;
Led_Blue_Off;
}
void delay(unsigned int t)
{
while(t--);
}
void EXTI_Configration()
{
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO ,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);
EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line13;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
void NVIC_Configration()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
int main()
{
Led_Configration();
EXTI_Configration();
NVIC_Configration();
while(1) //控制红绿灯交替闪烁
{
Led_Red_Toggle;
delay(100000);
Led_Green_Toggle;
}
}
void EXTI0_IRQHandler() //按键1进入EXTI0中断控制蓝灯闪烁
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line0);
Blue_Flash();
}
}
void EXTI15_10_IRQHandler() //按下KEY2进入EXTI13通道使蓝灯状态取反
{
if(EXTI_GetITStatus(EXTI_Line13) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line13);
Led_Blue_Toggle;
}
}
复制代码
中断
,
按键
,
led
,
stm32
,
Proteus
相关帖子
•
labview做的LED流动滚动显示
•
STM32+LabVIEW的USB数据采集与显示源程序
•
51单片机交通信号灯 内含程序源码及Proteus仿真电路图
•
VB上位机设置时间 51单片机DS1302时钟的proteus仿真程序
•
基于PROTEUS的电路及单片机系统设计与仿真
•
51单片机原理及应用:基于KeilC与Proteus
•
基于STM32的通用定时器使用 Proteus仿真程序
•
STM32示波器程序ILI9341_IO模拟源程序+Proteus仿真
•
STM32F407 FLAC软解压 源程序
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
路漫漫
194
主题
199
帖子
74
积分
初级会员
初级会员, 积分 74, 距离下一级还需 426 积分
初级会员, 积分 74, 距离下一级还需 426 积分
工控币
74
加好友
发消息
回复楼主
返回列表
电子技术综合讨论
单片机嵌入式
EDA设计仿真
STM32/8
51单片机
上位机开发及系统管理
Labview
Multisim仿真
图文推荐
用Fanuc Karel语言实现三点建坐标系
2021-01-04
用CH341A做的USB转SPI_232_485_TTL转换器 PCB+SCH文件 烧写器源
2020-12-14
51单片机采集温度通过串口发送到labview上位机采集曲线显示
2020-12-13
基于组态王的占空比PID算法温度控制系统设计 含源码和文档
2020-12-13
基于LabVIEW的电动车速度监测和控制系统上位机程序设计
2020-12-08
热门排行
1
谁有Simatic net v16的激活工具 EBK不行啊
2
西门子PLC电气设计与编程自学宝典双色版 [
3
西门子G120变频器精英训练营视频教程
4
博途TIA Portal V16+UPD1
5
西门子S7-200 SMART 精英训练营视频教程(5
6
HMI人机交互设计大师课程(七集)
7
有没有 GE plc PME9.0版本的中文对照表
8
永宏PLC红绿灯控制程序
9
西家V90精英训练营视频教程(54课时)
10
FACTORY IO 2.4.3 虚拟仿真调试软件 支持西