最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

CountSensor學習注釋22/8/10學習打卡

2022-08-10 22:38 作者:傅李耶  | 我要投稿

CountSensor.c

#include "stm32f10x.h"? ? ? ? ? ? ? ? ? // Device header

//涉及中斷

uint16_t CountSensor_Count;


//配置中斷,外部中斷信號從GPIO到AFIO,再到EXTI,再到NVIC,最后到CPU

void CountSensor_Init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//RCC開啟GPIO時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//開啟AFIO的時鐘

//EXTI和NVIC的時鐘是一直打開的

//配置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);//初始化GPIOB外設

//配置AFIO外部中斷引腳選擇

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);//采用PB14引腳

//GPIO_EXTILineConfig()雖然以GPIO開頭但為AFIO的函數

//配置EXTI外設

/*配置為將EXTI的第14個線路配置為中斷模式

選中的線路開啟中斷,下降沿觸發(fā)

PB14的電平信號通過EXTI通向下一級NVIC

? ? ? ?*/

EXTI_InitTypeDef EXTI_InitStructure;//定義結構體

EXTI_InitStructure.EXTI_Line = EXTI_Line14; //需要PB14所在的線路故為Line14

EXTI_InitStructure.EXTI_LineCmd = ENABLE;//指定選中線的新狀態(tài)

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

//可以是中斷模式(_Interrupt)或事件模式(_Event)

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

//指定觸發(fā)信號的有效邊沿,EXTI_Trigger_Rising上升沿觸發(fā),EXTI_Trigger_Falling下降沿觸發(fā)

//EXTI_Trigger_Rising_Falling上升沿和下降沿均觸發(fā)

EXTI_Init(&EXTI_InitStructure);

//配置NVIC

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//函數指定中斷分組,整個芯片只能采用一種分組

//(NVIC_PriorityGroup_2)兩位搶占中斷,兩位響應中斷

NVIC_InitTypeDef NVIC_InitStructure;//定義結構體,結構體名為NVIC_InitStructure

NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_Init(&NVIC_InitStructure);//將地址放入函數,&為取地址符號

}


uint16_t CountSensor_Get(void)

{

return CountSensor_Count;

}

/**

* 中斷函數(均無參數、無返回值)名稱是固定的,可從啟動文件中直接復制而來

若名稱錯誤則無法進入中斷

? ?*/

void EXTI15_10_IRQHandler(void)//此中斷EXTI10`EXTI15均能進入

{

if (EXTI_GetITStatus(EXTI_Line14) == SET)//中斷標志位判斷,確保為想要的中斷源(EXTI14)觸發(fā)該函數

//EXTI_GetITStatus()返回值為SET或者RESET

{

/*如果出現數據亂跳的現象,可再次判斷引腳電平,以避免抖動*/

if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)

{

CountSensor_Count ++;//采用的是下降沿觸發(fā)的方式,在紙片移開時會++

}

EXTI_ClearITPendingBit(EXTI_Line14);//清除中斷標志位函數

/*只有當中斷標志位 置1,程序就跳轉到中斷函數,若不清除中斷標志位,則會一直申請中斷*/

}

}

CountSensor.h

#ifndef __COUNT_SENSOR_H

#define __COUNT_SENSOR_H


void CountSensor_Init(void);

uint16_t CountSensor_Get(void);


#endif


CountSensor學習注釋22/8/10學習打卡的評論 (共 條)

分享到微博請遵守國家法律
秭归县| 木兰县| 合肥市| 华阴市| 抚顺市| 余姚市| 黔西| 原阳县| 烟台市| 东乡县| 饶河县| 忻州市| 同德县| 顺昌县| 洪洞县| 延川县| 濮阳县| 滦南县| 余庆县| 安福县| 和平区| 苍梧县| 芜湖市| 东兴市| 镇雄县| 盐城市| 咸阳市| 泰安市| 白沙| 德昌县| 屯留县| 宁远县| 彭水| 改则县| 农安县| 鹤庆县| 乌兰浩特市| 平顺县| 池州市| 九龙县| 乌鲁木齐县|