当前位置: 首页 > wzjs >正文

两个相同的网站对做优化有帮助liunx wordpress 搭建

两个相同的网站对做优化有帮助,liunx wordpress 搭建,谷歌官网入口手机版,牡丹江建设银行网站题目: 参照外部中断的原理和代码示例,再结合之前已经实现的按键切换LED状态的实验,用外部中断改进其实现。 请自行参考文档《中断》当中,有关按键切换LED状态的内容, 自行连接电路图,基于外部中断机制,实现以下功能&am…

题目:

参照外部中断的原理和代码示例,再结合之前已经实现的按键切换LED状态的实验,用外部中断改进其实现。

请自行参考文档《中断》当中,有关按键切换LED状态的内容, 自行连接电路图,基于外部中断机制,实现以下功能:

1.按键1,按下和释放后,点亮LED

2.按键2,按下和释放后,熄灭LED

3.按键3,按下和释放后,使得LED闪烁

具体按键的电路接法,可以直接参考文档的内容去实现。


关键点


分析:

按键外部中断实验
在这里插入图片描述


代码

#include "stm32f10x.h"
#include "Delay.h"#define LED_NORMAL 0   // LED 正常状态(熄灭或者点亮)
#define LED_BLINK 1   // LED 闪烁状态uint8_t LED_State = LED_NORMAL;  // LED 默认正常状态/**
* @brief  按键初始化,配置 PB6, PB8 和 PA0 为外部中断
* @param  无
* @retval 无
*/
void KEY_Init(void) {// 开启 GPIOB 和 AFIO 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;// 配置 PB6 和 PB8 为下拉输入模式(因为 按键 接正极,按下时会变为高电平)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; // 下拉输入模式GPIO_Init(GPIOB, &GPIO_InitStructure);// 配置 PA0 为上拉输入模式(因为 按键 接负极,按下时会变为低电平)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入模式GPIO_Init(GPIOA, &GPIO_InitStructure);// 使用AFIO外设将三个按键引脚映射到对应达到EXTI线GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource6); // PB6GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8); // PB8GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // PA0EXTI_InitTypeDef EXTI_InitStructure;// 配置 EXTI6 和 EXTI8(PB6 和 PB8)为上升沿触发EXTI_InitStructure.EXTI_Line = EXTI_Line6 | EXTI_Line8;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  // 上升沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);// 配置 EXTI0(PA0)为下降沿触发EXTI_InitStructure.EXTI_Line = EXTI_Line0; // 选择 PA0 对应的 EXTI0EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // 下降沿触发EXTI_Init(&EXTI_InitStructure);// NVIC 配置初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;// 配置 NVIC,处理 EXTI6, EXTI8 和 EXTI0 的中断// 优先级都设置为相同的优先级NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; // 处理 EXTI6 和 EXTI8 的中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // 处理 EXTI0 的中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}/**
* @brief  LED(PA3)初始化
* @param  无
* @retval 无
*/
void LED_Init(void) {// 开启 GPIOA 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置 PA3 为开漏输出模式GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);// 设定初始状态为 LED 关闭(PA3 高阻态)GPIO_SetBits(GPIOA, GPIO_Pin_3);
}/**
* @brief  外部中断服务函数(ISR),处理 PB6 和 PB8 按键中断
* @param  无
* @retval 无
*/
void EXTI9_5_IRQHandler(void) {// 检查是否是 PB6 触发的中断if (EXTI_GetITStatus(EXTI_Line6) == SET) {// 清除 EXTI6 中断标志EXTI_ClearITPendingBit(EXTI_Line6);// 按键持续按下,等待弹起while (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6) == Bit_SET);// 点亮 LED,设置LED为正常模式LED_State = LED_NORMAL;GPIO_ResetBits(GPIOA, GPIO_Pin_3);  // 低电平,点亮 LED}// 检查是否是 PB8 触发的中断if (EXTI_GetITStatus(EXTI_Line8) == SET) {// 清除 EXTI8 中断标志EXTI_ClearITPendingBit(EXTI_Line8);// 按键持续按下,等待弹起while (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) == Bit_SET);// 点亮 LED,设置LED为正常模式LED_State = LED_NORMAL;GPIO_SetBits(GPIOA, GPIO_Pin_3);  // 高电平,熄灭 LED}
}/**
* @brief  外部中断服务函数(ISR),处理 PA0 按键中断,LED闪烁
* @param  无
* @retval 无
*/
void EXTI0_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line0) == SET) {// 清除 EXTI0 中断标志EXTI_ClearITPendingBit(EXTI_Line0);while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET);LED_State = LED_BLINK;}
}int main(void) {LED_Init();       // 初始化 LEDKEY_Init();       // 初始化 PB6, PB8 和 PA0 按键while (1) {if (LED_State == LED_BLINK) {// LED 进入闪烁状态GPIO_ResetBits(GPIOA, GPIO_Pin_3);  // 点亮 LEDDelay_Ms(100);  // 延时 100ms/*Delay_Ms函数是使用中断来实现的若LED在闪烁状态下,按压点亮LED按键恰好进入了上一个Delay_Ms函数等它中断延时结束就会执行LED熄灭操作这样点亮LED按键的功能就会失效,所以这里要加一个判断然后跳过后面的熄灯逻辑*/if (LED_State == LED_NORMAL) {continue;}GPIO_SetBits(GPIOA, GPIO_Pin_3);    // 熄灭 LEDDelay_Ms(100);  // 延时 100ms}}
}

在这里插入图片描述
闪烁
在这里插入图片描述
在这里插入图片描述


解决方案总结:


文章转载自:

http://y1ay8fUA.swLwf.cn
http://NlhGJX8V.swLwf.cn
http://opmWy8GR.swLwf.cn
http://xHFUuRda.swLwf.cn
http://8B42kKnO.swLwf.cn
http://UIaa9efW.swLwf.cn
http://yvcAjsIm.swLwf.cn
http://vorgqCid.swLwf.cn
http://mYDTESPl.swLwf.cn
http://yI8zWGGw.swLwf.cn
http://FZ3rgDRd.swLwf.cn
http://REji55Ef.swLwf.cn
http://1UDPHjEv.swLwf.cn
http://J8u7JYqK.swLwf.cn
http://gPAwWjYr.swLwf.cn
http://mT5zdlGd.swLwf.cn
http://zPuUO3ak.swLwf.cn
http://cWnnQ0r4.swLwf.cn
http://ACkPDkyt.swLwf.cn
http://OXRxMLY9.swLwf.cn
http://exUnoZe2.swLwf.cn
http://utORXt8z.swLwf.cn
http://XT6zaJty.swLwf.cn
http://iz7Bsphu.swLwf.cn
http://6yhRUb5k.swLwf.cn
http://NZqiK6Ms.swLwf.cn
http://30Wm4H6G.swLwf.cn
http://HwzSj6PA.swLwf.cn
http://TuFnTvRF.swLwf.cn
http://40xX1yD7.swLwf.cn
http://www.dtcms.com/wzjs/770762.html

相关文章:

  • 龙岗做网站北京到安阳的火车
  • 进空间的网站凡客诚品的配送方式
  • 赣州市赣县区建设局网站北京营销推广公司
  • 怎么做网站的导航网站开发团队需要哪些
  • 给别人做网站 网站违法了如何做电商运营推广
  • 龙岩网站建设企业做母婴网站设计思路
  • 做一个网站需要什么手把手教你做网站 3
  • 广州网站优化网站建设公司介绍简介
  • 网站建设推广唯心磁遁8网站前期设计
  • 手机网站 普通网站网站建设策划书参考案例
  • html5网站图标哪里有建站代理加盟
  • 要想做一个好网站需要多久杭州app开发公司都集中在哪里
  • 网站建设高端设计广州外贸型网站设计
  • 医院网站建设意义足球哪个网站做的比较好
  • 网站的建设运营收费是哪些中国住房和城乡建设部查询网站6
  • 怎么申请建立网站wordpress主题需要ftp
  • 河北seo网站开发wordpress评论差价
  • 网站建设留言板怎么做如何做超一个电子商务网站
  • php网站开发是什么意思做软件与做网站建设有什么区别
  • 湖南系统建站怎么用如何构建成交型网站
  • 电子商务网站建设与规划案例做淘宝优惠券网站
  • 个人网站建设如何选服务器关于建设工程资料的网站
  • 网站建设制作网络营销公司泉州互联网公司排名
  • 烟台做网站的价格陕西建设厅官网首页
  • 广州营销型网站制作江苏建筑模板厂家
  • 如何用手机制作网站汕头h5建站
  • 句容建设局网站招标小程序开发公司有哪些
  • 甘肃网站备案审核个人网页设计图片素材
  • 博客网站素材游戏设计师网站有哪些
  • 网站建设一般多少钱方案东莞 网站建设多少钱