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

菏泽 兼职做网站官方百度app下载

菏泽 兼职做网站,官方百度app下载,惠州城市建设建筑网站,浙江省网站备案嵌入式学习_part2 本部分笔记用于学习记录,笔记源头 >>b站江科大_STM32入门教程_EXTI EXTI、ADC、NVIC和AFIO 开发环境:keil MDK、STM32F103C8T6 1 )EXTI STM32F10xxx参考手册(中文)-> 中断与事件 ->…

嵌入式学习_part2

本部分笔记用于学习记录,笔记源头 >>b站江科大_STM32入门教程_EXTI

EXTI、ADC、NVIC和AFIO

开发环境:keil MDK、STM32F103C8T6

1 )EXTI

STM32F10xxx参考手册(中文)-> 中断与事件 -> 中断异常向量表<1>:CPU运行主程序,当 “异常/中断” 产生时,硬件自动跳转到中断向量表的地址去执行相关程序;

在这里插入图片描述

STM32F10xxx参考手册(中文)-> 中断与事件 -> 外部中断/事件线路映像<1>:支持所有的GPIO口,但是不能使用相同的Pin,AFIO来连接到EXTI(数据选择器);<2>:AFIO的作用,中断引脚的选择(数据选择器)、复用功能的重映射;<3>:EXTI9~5、EXTI10~15,分配在一个通道;<4>:EXTI0~15,用于GPIO的0~15、EXTI线16连接到PVD输出、 EXTI线17连接到RTC闹钟事件、EXTI线18连接到USB唤醒事件、EXTI线19连接到以太网唤醒事件(只适用于互联型产品);

在这里插入图片描述

STM32F10xxx参考手册(中文)-> 中断与事件 -> EXTI结构框图

在这里插入图片描述

2 )NVIC(内核外设)

NVIC_抢占优先级 / 响应优先级

抢占优先级:抢占优先级高的,用于中断嵌套
响应优先级:"排队",响应优先级相同的,按照 "向量表" 序号排队;

在这里插入图片描述

3)外部中断的代码实现

GPIO、RCC、NVIC、EXTI、AFIO

1.基本框架

在这里插入图片描述

2.代码部分

1.开启时钟
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);		//开启GPIOB的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);		//开启AFIO的时钟,外部中断必须开启AFIO的时钟
2.GPIO配置
关于GPIO的输入模式,GPIO_Mode = GPIO_Mode_IPUGPIO的输入配置:STM32F10xxx参考手册(中文)-> 8.1.11 外设的GPIO配置
	/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);						//将PB14引脚初始化为上拉输入
3.AFIO设置
AFIO的功能:1.EXTI的数据选择器;2.引脚功能的重映射;AFIO相关的函数和GPIO的函数都放在 -> stm32f10x_gpio.h
//配置AFIO事件输出功能
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
void GPIO_EventOutputCmd(FunctionalState NewState);
//引脚重映射
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
//配置AFIO的数据选择器,来选择我们想要的中断引脚
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
//以太网有关
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
 stm32f10x_gpio.c -> GPIO_EXTILineConfig()里面实际的在操作AFIO的相关寄存器
/*** @brief  Selects the GPIO pin used as EXTI Line.* @param  GPIO_PortSource: selects the GPIO port to be used as source for EXTI lines.*   This parameter can be GPIO_PortSourceGPIOx where x can be (A..G).* @param  GPIO_PinSource: specifies the EXTI line to be configured.*   This parameter can be GPIO_PinSourcex where x can be (0..15).* @retval None*/
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
{uint32_t tmp = 0x00;/* Check the parameters */assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03));AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)));
}
 这里我们进行配置:PB14 -> EXTI_LINE14
	/*AFIO选择中断引脚*/GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);//将外部中断的14号线映射到GPIOB,即选择PB14为外部中断引脚
4.EXTI & NVIC
	//状态标志位,主函数里面用FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);void EXTI_ClearFlag(uint32_t EXTI_Line);//中断相关的状态标志位,中断函数里面用ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
	/*EXTI初始化*/EXTI_InitTypeDef EXTI_InitStructure;						//定义结构体变量EXTI_InitStructure.EXTI_Line = EXTI_Line14;					//选择配置外部中断的14号线EXTI_InitStructure.EXTI_LineCmd = ENABLE;					//指定外部中断线使能EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;			//指定外部中断线为中断模式EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;		//指定外部中断线为下降沿触发EXTI_Init(&EXTI_InitStructure);								//将结构体变量交给EXTI_Init,配置EXTI外设/*NVIC中断分组*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);				//配置NVIC为分组2//即抢占优先级范围:0~3,响应优先级范围:0~3//此分组配置在整个工程中仅需调用一次//若有多个中断,可以把此代码放在main函数内,while循环之前//若调用多次配置分组的代码,则后执行的配置会覆盖先执行的配置/*NVIC配置*/NVIC_InitTypeDef NVIC_InitStructure;						//定义结构体变量NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;		//选择配置NVIC的EXTI15_10线NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;				//指定NVIC线路使能NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;	//指定NVIC线路的抢占优先级为1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;			//指定NVIC线路的响应优先级为1NVIC_Init(&NVIC_InitStructure);								//将结构体变量交给NVIC_Init,配置NVIC外设
5.中断函数
startup_stm32f10x_md.s -> 中断向量表 - >ST写好了指定的中断处理 "接口" 函数
void EXTI15_10_IRQHandler(void)
{if (EXTI_GetITStatus(EXTI_Line14) == SET)		//判断是否是外部中断14号线触发的中断{//这里写你的执行逻辑	EXTI_ClearITPendingBit(EXTI_Line14);		//清除外部中断14号线的中断标志位//中断标志位必须清除//否则中断将连续不断地触发,导致主程序卡死}
}

4 )ADC

b站江科大_STM32入门教程_ADC

1.ADC基本框架

 ADC:模拟-数字转换器;<1>: 12位逐次逼近型ADC,1μs的转换时间;<2>: 输入电压值范围0~3.3v,由参考电压Vref+ ~ Vref- 决定;<3>: 转化结构范围0~4095,由ADC位数决定;<4>: 用于"转换"的输入通道(18个),16个外部通道(GPIO端口),2个内部通道;<5>: 触发ADC转换的方式:1. TIM通道;2.软件触发(函数调用);3.EXTI;<6>: 转化单元:规则组和注入组;1.规则组:可以一次转换16个通道的结果(16bit),但是规则组转换结果寄存器只有16bit,也就是只能存放一个通道的结果;2.注入组:可以一次转换4个通道的结果(16bit),注入组转换结果寄存器有4×16bit,也就是可以存放4个通道的结果;<7>: 阈值"看门狗":监测ADC转换电压;1.可以设置 "阈值" ,连接NVIC,进行函数处理;<8>: 规则组 / 注入组,转化结构结束时,也可连接NVIC,进行中断函数处理;<9>: ADC的处理时钟来源于APB2的预分频(2、4、6、8) ,最大14Mhz;可以看,STM32F10xxx参考手册(中文)-> 6.2时钟 -> 图8:时钟树;<10>: STM32F103C8T6 ADC资源,ADC1、ADC2,10个外部输入通道(GPIO);

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

2.逐次逼近型ADC

该类型的ADC与STM32 ADC原理一致;
通过"2分法",逐次比较电压值,通过比较器进行比较;

在这里插入图片描述

3.代码部分

1.结构框图

在这里插入图片描述

http://www.hkea.cn/news/277033/

相关文章:

  • 有没有便宜的网站制作制作网页教程
  • 医院网站制作优化关键词的方法有哪些
  • wordpress安装到网站吗泰安seo
  • 长春网站开发培训价格google play三件套
  • 做生存分析的网站有哪些国外新闻最新消息
  • 济南网站优化收费百度互联网营销
  • bootstrap响应网站模板下载发帖推广百度首页
  • 动态网站上的查询怎么做新媒体运营培训学校
  • 网站开发人员必备技能百度优化推广
  • 花都 网站建设百度推广怎么添加关键词
  • 开发公司成本部职责岗位职责和流程苏州网站建设优化
  • 湛江网站制作系统seo排名需要多少钱
  • 城乡现代社区建设seo关键词推广案例
  • 旅游网站开发外文文献关键洞察力
  • 大学生asp网站开发的实训周长沙百度快速优化
  • 黑龙江省建设网站百度投流运营
  • 网站关键词太多好不好兰州seo整站优化服务商
  • 义乌网站设计网店推广策划方案
  • 无锡网站优化工作室网站关键词排名优化推广软件
  • 长沙做网站的公司亚马逊seo什么意思
  • 仪征建设银行官方网站怎么优化一个网站
  • 那个网站可以查询美做空基金宁波网站推广平台效果好
  • 杨凌企业网站建设天津seo优化
  • 建设网站的工具免费b站在线观看人数在哪儿
  • 毕业设计餐饮网站建设国内前10电商代运营公司
  • 日本b2b网站市场调研的步骤
  • 强企网做网站网店推广有哪些
  • 博物馆网站建设策划书公司如何在百度宣传
  • 做cpa广告网站教程百度sem推广具体做什么
  • 免费网站建站WWW222国际军事最新消息今天