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

freeRTOS / day02

1. 定时器使用流程

1.1 ST32CubeMX 设置

1.1.0 选择定时器

        --> TIM1

1.1.1 Clock Source

        --> Internal Clock

1.1.2 Prescaler

        --> 预分频系数

1.1.3 Counter Period

        -- > 重装值

1.1.4 Prescaler 和 Counter Period 计算公式

定时时间(s) = (预分频系数+1) * (重装值 + 1)/ 系统时钟主频(48MHZ)

 1.2 程序

1.2.1 打开定时器1

        HAL_TIM_Base_Start_IT(&htim1); // htim1 -->定时器1

1.2.2 定时时间

        定时时间已经在STM32cubemx中设置好了

1.2.3 回调函数

        在STM32Cubemx中已经指定好了到达时间会调用到对应的函数

1.2.4.实现回调函数

        函数实现流水灯功能, 定时器1触发后点亮led, 定时器1触发后熄灭led 

        

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */uint16_t arr_led[3] = {GPIO_PIN_0,GPIO_PIN_1,GPIO_PIN_2	
};uint16_t all_leds = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;// call back function
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static int i = 0;//check if timer 1if(htim == &htim1){printf("timer 1 trigged\r\n");	i = i % 3;HAL_GPIO_WritePin(GPIOB, arr_led[i], GPIO_PIN_RESET ); // led on			i++;HAL_TIM_Base_Start_IT(&htim2);HAL_TIM_Base_Stop_IT(&htim1);}else if(htim == &htim2){printf("timer 2 trigged\r\n");	//HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2);HAL_GPIO_WritePin(GPIOB, all_leds, GPIO_PIN_SET); // led offHAL_TIM_Base_Start_IT(&htim1);HAL_TIM_Base_Stop_IT(&htim2);}//	HAL_UART_Transmit	(&huart1, "Hello World\r\n", size, 3000);}/* USER CODE END 0 */

        

http://www.lryc.cn/news/289743.html

相关文章:

  • Ubuntu 18.04 x86_64 上交叉编译 boost 库(ARMv7L)
  • 为什么 FPGA 比 CPU 和 GPU 快?
  • js常用函数总结
  • cartographer离线建图报错:data_.trajectory_nodes.SizeOfTrajectoryOrZero
  • 【YOLO系列算法俯视视角下舰船目标检测】
  • python进程间使用共享内存multiprocessing.shared_memory来通讯
  • 经典目标检测YOLO系列(三)YOLOv3的复现(2)正样本的匹配、损失函数的实现
  • 编程笔记 html5cssjs 061 JavaScrip简介
  • 计算机网络 第5章(运输层)
  • pythonSM4加密
  • JSP在线阅读系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc
  • el-date-picker设置default-time的默认时间
  • List集合根据对象某个元素去重
  • QML Qt4版本移植到Qt5概述
  • 【极数系列】Flink环境搭建Linux版本 (03)
  • 2023年深圳市节假日人口迁入数据,shp/excel格式,需要自取!
  • Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤
  • HiveSQL题——用户连续登陆
  • 题解仅供学习使用
  • Linux命令-apt-get命令(Debian Linux发行版中的APT软件包管理工具)
  • matlab appdesigner系列-仪器仪表3-旋钮
  • 常见の算法5
  • MYSQL中group by分组查询的用法详解(where和having的区别)!
  • 架构篇25:高可用存储架构-双机架构
  • 微信小程序(十五)自定义导航栏
  • Python3进行pdf文件分割及转word
  • 深入理解TCP网络协议(1)
  • QT 中如何使用 JSON 功能?
  • C++面试:算法的执行效率和资源消耗、时间和空间复杂度分析根据实际场景,选用合适的数据结构和算法进行程序设计
  • 力扣100215-按键变更的次数