PA11和PA12的GPIO设置:

//main.c

GPIO_InitStruct.Pin = GPIO_PIN_11;

GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;//PA11下降沿触发中断

GPIO_InitStruct.Pull = GPIO_PULLUP;

GPIO_InitStruct.Speed = GPIO_SPEED_LOW;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_12;

GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; //PA12下降沿触发中断

GPIO_InitStruct.Pull = GPIO_PULLUP;

GPIO_InitStruct.Speed = GPIO_SPEED_LOW;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

HAL_NVIC_SetPriority(EXTI15_10_IRQn,0,0);//设置中断优先级,enable中断向量表

HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

接下来需要在stm32f1xx_it.c中实现EXTI15_10_IRQHandler:

void EXTI15_10_IRQHandler(void){

if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11)!=0){

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);

}

if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_12)!=0){

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);

}

}

然后调用HAL_GPIO_EXTI_Callback来判断并处理中断,消除标志位:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){

switch(GPIO_Pin){

caseGPIO_PIN_11:

printf("Pressed\r\n");

mode=!mode;     //更改模式

break;

caseGPIO_PIN_12:     //增加一圈距离

counter++;

break;

}

}

定时器中断:

定时器初始化:

void MX_TIM3_Init(void)

{

TIM_ClockConfigTypeDef sClockSourceConfig;

TIM_MasterConfigTypeDef sMasterConfig;

TIM_Handler.Instance = TIM3;

TIM_Handler.Init.Prescaler = 48000;

TIM_Handler.Init.CounterMode = TIM_COUNTERMODE_UP;

TIM_Handler.Init.Period = 199;         //200ms

TIM_Handler.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

HAL_TIM_Base_Init(&TIM_Handler);

sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

HAL_TIM_ConfigClockSource(&TIM_Handler, &sClockSourceConfig);

sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

HAL_TIMEx_MasterConfigSynchronization(&TIM_Handler,&sMasterConfig);

}

计时器中断处理函数:

//stm32f1xx_it.c

void TIM3_IRQHandler(void)

{

HAL_TIM_IRQHandler(&TIM_Handler);

}

//main.c

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){

if(htim->Instance == TIM3){

timer_flag= 1;       //设置flag

timer_counter++;

}

中断驱动的自行车码表相关推荐

  1. 基于51单片机自行车码表设计

    [毕设课设]基于51单片机自行车码表设计 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机proteu ...

  2. Garmin Edge 1030 Plus GPS 骑行码表今日立减 300 美元

    Prime 会员日已全面生效,甚至山地自行车手和其他骑自行车的人也可以参加 Prime 会员日优惠 .Garmin Edge 1030 Plus自行车电脑在Prime Day的价格降至400美元,如果 ...

  3. 智能可穿戴平台,你更看好谁?

    随着可穿戴设备大潮来袭,众巨头纷纷布局可穿戴.6月,苹果发布了Healthkit平台,谷歌则发布了AndroidWare平台,日前,腾讯(微信)的智能硬件计划曝光.前两者从系统层面出发,都希望自己成为 ...

  4. 从 B 站火到 GitHub,国人开发者又一黑科技面世!

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料月石一 发自 凹非寺本文经AI新媒体量子位(ID:QbitAI)授权转载,转载 ...

  5. 《痞子衡嵌入式半月刊》 第 50 期

    痞子衡嵌入式半月刊: 第 50 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期. 本期刊是开源项目(GitHub: JayHeng/pz ...

  6. c语言单片机停车场收费系统,基于51单片机停车场车位引导系统设计

    ?周明彬 曾伊玲 摘要:在很多人流量大的地方,因为车辆集中的情况,所以每次经过停车场时都需要工作人员来指挥车辆,告诉车主停车场那些地方还有空余车位可以泊车.所以很多地方的旧停车场使用的管理方式,是十分 ...

  7. 自制车速记录仪「GitHub 热点速览 v.21.31」

    作者:HelloGitHub-小鱼干 如果你有一辆普通的自行车,那么就可以使用下 X-TRACK 这个项目制作一个自己的测速器,记录你的行驶轨迹还有车速,体验一把硬件发烧友的乐趣.如果你有一个非 ma ...

  8. 基于单片机的压力流量报警器(附代码+仿真+论文)

    基于单片机的压力流量报警器(附代码+仿真+论文) **==完整论文+代码+仿真可关注我在主页私我==** 摘要 关键字 第一章绪论 1.1课题背景及其意义 1.2 国内外的研究状况 1.3本文的主要研 ...

  9. Edge 705试用

    Edge 705是早就听说过的玩意,特别是在环法自行车赛中出尽了风头,那时候在想我要是有一个Edge 705那该多好啊.现在,我终于有了一个Edge 705,是英文版的,不过有已经不错了.只是由于平时 ...

  10. 咕咚为何值1.5亿美元?

    做运动社区和智能硬件产品的咕咚昨日宣布从SIG和软银获得3000千万美金的B轮融资,估值1.5亿美元.咕咚CEO申波表示这笔钱将主要用于研发.运营和人才引进. 之前咕咚曾在今年3月份获得来自深创投和中 ...

最新文章

  1. 编写高质量代码改善C#程序的157个建议——建议148:不重复代码
  2. jee websocket搭建总结
  3. 监视Rails进程内存泄漏的技巧
  4. Json字符串和对象相互转换
  5. super 和 this 关键字的比较+调用构造器(this)+动态绑定
  6. 从飞鸽传书口水仗想到的
  7. 怎样学操作系统?一文带你掌握核心内容
  8. hihocoder 1032 最长回文子串(Manacher)
  9. 可以扦插的花有哪些?
  10. Java高并发BlockingQueue重要的实现类二
  11. 精益创业实战 - 第3章 制作自己的精益画布
  12. vue项目通讯录_vue组件--通讯录
  13. [渝粤教育] 中国地质大学 国际贸易实务 复习题 (2)
  14. PPT去除页码的方法
  15. 华为热设计工程师待遇_【华为热设计工程师面试】华为的面试是我面试过程中相对简单的一个。-看准网...
  16. 情人节这些智能设备可千万别送女友
  17. IIS7配置PHP图解
  18. Yapi idea插件使用
  19. 继电器控制模块的一些知识
  20. Arcgis中影像空值NoData处理及去除背景值

热门文章

  1. 华为手机记事本导出_你知道便签记事本在手机哪里储存吗?
  2. 移动端html5广告的优势,移动端H5广告的互动类型探析
  3. 李维:我的回忆和一些有趣的事(About Borland)(转载)
  4. php 下载excel文件,单独设置工作表(sheet1,sheet2,sheet3....)
  5. Javascript复习必记知识点
  6. 面试中的Singleton
  7. 我的CSDN博客文章,被大学老师、本科生、公司 “引用“ 了!
  8. 为什么要用Citrix桌面虚拟化?
  9. linux双击执行sh脚本
  10. 怎么获取url_Requests库(十二)实战获取今日头条24小时热文