目录模块选择编程环境 MLX90614基本原理通信协议(SMBus通信,类IIC通信)代码实现STM32与模块之间接线表1.标准库实现温度采集2.HAL库实现温度采集模块选择 ·STM32F103C8T6 ·MLX90614非接触式红外测温传感器编程环境 ·KEIL5(μVisionV5.30.0.0)其它版本影响并不大 ·STM32CubeMX,版本不限 ·串口助手 MLX90614基本原理 引脚说明编号名称功能1VCC电源正,3-5V2GND电源地3SCL串行时钟输入4SDA串行地址和数据输入/输出MLX90614是一种红外温度计,用于非接触式温度测量。红
目录一、基础概念1、FreeRTOS2、单片机编程的系统概念a、裸机系统,包括轮询系统(不包括中断)和前后台系统(中断为前台,轮询为后台)b、多任务系统3、FreeRTOS编程风格a、数据类型b、变量名的定义c、函数名d、宏定义二、Cubemx创建工程1、创建任务2、创建队列3、信号量 4、互斥量5、中断三、FreeRTOS基础知识 1、任务创建流程a、任务的概念b、任务的栈c、任务的函数主体d、任务控制块e、任务创建函数(与任务函数主体区分,任务函数主体是任务创建函数的一个参数)f、实现就绪列表g、实现调度器2、FreeRTOS任务执行原则a、合作式任务调度b、抢占式任务调度3、FreeRT
01前言本教程使用的机器人控制板拥有4个带编码器的电机接口,4个舵机接口,串口通信接口、SWD下载调试接口、航模遥控接口、USB5V输出接口以及方便与树莓派直接连接的40PIN接口等,板载资源丰富,方便调试!可以控制两轮、四轮差速及阿克曼转向机器人/小车。控制板上的电机接口:机器人小车电机驱动开发——测量小车速度在上一篇文章《STM32机器人控制开发教程No.1驱动电机(基于HAL库)》中介绍了关于如何使用NANO小车上的机器人控制板控制减速电机完成前进、后退和转向等基础功能,如果需要知道小车的实时行进速度该如何进行测量呢?在本章节给你介绍如何使用NANO驱动板进行小车速度的测量!02 STM
目录1.认识时钟树(掌握)1.1什么是时钟?1.2认识时钟树(F1)1.2.1STM32F103时钟树简图1.2.2STM32CubeMX时钟树(F103)1.3认识时钟树(F4)1.3.1F407时钟树1.3.2F429时钟树1.3.3STM32F4时钟树简图1.3.4STM32CubeMX时钟树(F407)1.3.5STM32CubeMX时钟树(F429)2,配置系统时钟(掌握)2.1外设时钟使能和失能2.2`sys_stm32_clock_init`函数(F1)2.2.1`HAL_RCC_OscConfig()`函数(F1)2.2.2`HAL_RCC_ClockConfig()`函数(F
阅读本专栏其他文章,有助于理解本文。👆文章目录一、开发库选择1.1概述1.2CMSISpack1.3SPL库1.4HAL库1.5LL库1.6寄存器开发二、代码对比2.1使用寄存器2.2使用CMSIS库2.3使用SPL库2.4使用HAL库2.5使用LL库2.6使用RTOS三、如何在软件中选择不同的库3.1ARMMDK3.2STM32CubeIDE一、开发库选择1.1概述STM32开发相关的库有很多,它们都是为了方便开发者使用STM32微控制器而提供的软件工具。根据不同的功能和层次,可以将它们分为以下几类:CMSIS库(准确来说是CMSISpack)(CortexMicrocontrollerSo
复习一周进国赛,只讲具体配置方法,原理网上找。用到最新版的STM32G431,一口气配置完(熟练的话全部配置亲测40分钟搞定)。把省赛所有基础配置过一遍,内容很多,都是干货,觉得有用记得点赞收藏。包括时钟配置、中断配置;外设中常用的GPIO(KEY,LED)、ADC、UART、LCD、I2C、TIM(pwm,cap)、RTC1.Cubemx配置1.1选择芯片1.2时钟配置1.3GPIO根据官方的原理图配置led的GIPO PC8-PC15+PD2(别把这个忘了)和key的GPIOPB0-PB2PA0 GPIO配置默认状态就好1.4 ADC板上电阻R37和R38连接到PB15和PB12 配置
主控:STM32F103C8T61.电机测速在进行速度控制之前,我们首先需要进行速度采样,这里参见这篇博文2.电机驱动这里不细说电机驱动模块的选型和使用,而是说一个常见的误区。我们驱动电机要使用两路PWM,一般是一路给PWM信号,一路是纯低电平。但这其实是不好的,正确的做法是一路给PWM,另一路给纯高电平。此时PWM的占空比越低,电机的速度越快。如果大家使用的是类似于A4950或者DRV8870这样的电机驱动芯片,它们的数据手册中都会有这样的描述这是DRV8870的,明确说明了PWM加高电平是最佳控制方式。这是A4950的,用曲线图的方式说明了PWM加高电平时电流会更加稳定。此外,如果
官方库源文件:1移植官方6个库文件2修改inv_mpu.h中结构体//新增void(*tmp)(void);structint_param_s{#ifdefinedEMPL_TARGET_MSP430||definedMOTION_DRIVER_TARGET_MSP430void(*cb)(void);unsignedshortpin;unsignedcharlp_exit;unsignedcharactive_low;#elifdefinedEMPL_TARGET_UC3L0unsignedlongpin;void(*cb)(volatilevoid*);void*arg;#elifdefi
目录一、PLL主时钟初始化1.1时钟使能 1.2配置好主时钟配置结构体1.3将配置好的值写入到对应的寄存器、初始化PLL主时钟;1.3.1__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)分析: 1.3.2给PLL相关寄存器赋值:二、外设时钟初始化2.1等待周期的验证和写入;2.2HCLK配置2.3SYSCLK配置、时钟源选择2.3.1 PLL时钟就绪检测和__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY)宏定义的分析2.3.2系统时钟源选择2.4PCLK1和PCLK2配置2.5更新hal库参数三、总结本人使用的单片机stm3
STM32使用HAL库之Msp回调函数1.问题提出在STM32的HAL库使用中,会发现库函数大都被设计成了一对:HAL_PPP/PPPP_InitHAL_PPP/PPPP_MspInit而且HAL_PPP/PPPP_MspInit函数的defination前面还会有__weak关键字上面的PPP/PPPP代表常见外设的名称为3个字符或者4个字符怎么理解这个设计呢?2.问题分析2.1结论首先说结论:HAL_PPP/PPPP_Init是与具体芯片(无论是STM32F4/F1/F7)无关的设置HAL_PPP/PPPP_MspInit是与具体芯片相关的配置(如STM32F429IGTx)这样的设计是将