草庐IT

HAL_NVIC_SetPriority

全部标签

STM32系列(HAL库) ——定时器编码器/正交解码模式

     STM32定时器的正交解码模式多用于检测电机的编码器脉冲数做闭环控制,如PID。本文简单介绍一下定时器在Cubemx如何配置以及程序引用到的API函数。一、前期准备1、硬件:STM32C8T6最小系统板USB-TTL串口模块ST-Link下载器2、软件:keil5-IDEcubeMX 二、cubeMX配置1、配置RCC——选着外部时钟源2、配置SYS—— SerialWire模式3、时钟树拉满72M4、配置串口1        5.编码器模式配置这里配置哪一个定时器都可以,只要在第2步存在EncoderMode选项即可。第3步EncoderModeT1是只计上升沿,EncoderMo

STM32CubeMX配置HAL库实现SPI-DMA的递归调用

对于快速入门STM32CubeMX,可以参考【STM32】HAL库STM32CubeMX系列学习教程——————————一、硬件参数与配置:核心:STM32F407ZET6  外设ADC:ADS1258  数量:3个  ※核心与3个ADC使用SPI总线“一主多从”方式连接,PCB布线的方式与下图一致。※在电路板上STM32与三个ADS1258在同一直线上分布,STM32在一端,三个ADC依次排布。※离STM32最远ADC的DRDY硬件管脚与STM32的EXTIline4interrupt连接。 1.1STM32CubeMX的设置 1.1.1时钟树配置如下:  1.1.2 ADC输入的CLK由S

【HAL库】STM32CubeMX开发----非阻塞延时实验----SysTick(滴答定时器)中断

STM32CubeMX下载和安装详细教程【HAL库】STM32CubeMX开发----STM32F103/F207/F407----目录前言HAL库有自带的ms级延时函数:HAL_Delay();缺点:这是阻塞延时方式,就是延时期间,什么都不能干,这样很浪费资源。这篇文章主要介绍,利用SysTick(滴答定时器)中断实现非阻塞延时的实验。STM32F407----非阻塞延时实验主要是利用SysTick(滴答定时器)中断中有一个计数变量,每1ms加1,通过获取这个时间数值变量,实现非阻塞延时。相关HAL库函数/***@功能:获取以毫秒为单位的tick值*@参数:无*@返回值:以毫秒为单位的tic

STM32_HAL库—ADC采集数据

一、简介       STM32 的ADC精度为12位,且每个ADC最多有16个外部通道。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。        ADC的转换时间跟ADC的输入时钟和采样时间有关,公式为:Tconv=(采样时间+12.5个周期)/预分频        一般我们设置PCLK2=72M,经过ADC预分频器能分频到最大的时钟只能是12M,然后设置“采样时间”为1.5个周期。通过公式:(1.5+12.5)/12M=1.166...us ,算出最短的转换时间大约为1.17us。    下面使用的3个例子设置的“采样

STM32 HAL库的HAL_UART_Transmit_IT使用方法

HAL_StatusTypeDefHAL_UART_Transmit_IT(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize)是STM32HAL库中非阻塞的串口发送函数。用法:1.调用HAL_UART_Transmit_IT()发送数据      2.在HAL_UART_TxCpltCallback()里写上发送完成后的处理注意: HAL_UART_Transmit_IT()要等待上次发送完成后再发送,否则返回HAL_BUSY。用huart->gState==HAL_UART_STATE_READY判断上次是否发送完成。官方的解释    (

STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库

目录1.简介-初识STM322.开发环境2.1使用Keil5 2.2使用STM32CubeMX 3.标准库与HAL库区别4.推挽输出与开漏输出1.简介-初识STM32什么是单片机?单片机(Single-ChipMicrocomputer)是一种集成电路芯片,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。STM系列单片机命名规则ST--意法半导体M--Microelectro

通过修改HAL_UART_Transmit_DMA()函数,解决串口发送DMA只能发送一次的问题

参考文章:1. http://t.csdn.cn/FT6Mg         2. http://t.csdn.cn/ejFIQ今天用STM32F1的HAL库开发遇到一个奇怪的问题,在主函数循环调用中用串口1的DMA请求,将内存中的数据发送给串口,无论延迟Delay开了多大,始终只能发送一次DMA数据。后来在网上查阅大佬的资料终于有了思路。废话不多说,先上代码:在stm32f1xx_hal_uart.c文件中找到HAL_UART_Transmit_DMA()函数实现,在解锁操作__HAL_UNLOCK;后添加代码:huart->gState=HAL_UART_STATE_READY; 编译以后

【STM32CubeMX+HAL库】hmi串口屏显示波形

usarthmi是淘晶驰开发的一款基于串口通信并采用指令集控制的可触摸屏幕,集成了多种控件,如按钮控件,滑块控件等,大大减轻了开发的难度。      曲线控件学习入口下面我们来讲解一下cubeMX的配置以及输出正弦波代码的编写(三角波、方波同理)一、CubeMX配置1、设置时钟源(外部高速晶振)2、配置烧录口 3、串口配置这里我们选择使能串口1,可以看到设置完成后,系统会选择固定的引脚,当引脚被占用时,则无法使能串口1,因此st公司提供了多个串口通信通道(不同芯片数目不同)。usart.c文件中可查看串口的具体配置 4、时钟树配置前期基本拉满即可,博主用的是stmF4ccu6,不同芯片主频不同

STM32+HAL库使用ADC轮询模式采集音频信号

ADC模块:咪头声音采集模块ADC轮询模式缺点:占用CPU的使用率        软件开始ADC转换后,一直等到转换完成后,才向后执行,这个代码在初始化ADC之后执行一次校准(不执行这一步也可以,但精度可能会低一些);然后就可以使用ADC轮询转换了,只需要三步:启动转换、等待转换完成、读取转换数据,即可完成一次ADC转换。 1开启外部高速时钟2配置时钟树3USART配置4ADC配置5代码配置//串口重定向#include"stdio.h"intfgetc(FILE*f){uint8_tch=0;HAL_UART_Receive(&huart2,&ch,1,0xffff);returnch;}i

STM32 HAL库PID控制电机 第三章 PID控制双电机

STM32HAL库PID控制电机第三章PID控制双电机注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复1基础配置1.1编码器电路图及配置引脚定时器通道PA0TIM2_CH1PA1TIM2_CH2PB6TIM4_CH1PB7TIM4_CH2因此需要把TIM2、TIM4配置为编码器模式。在STM32CubeIDE中找到定时器2与定时器4,进行模式配置。以下以定时器2为例,定时器4只需进行相同配置即可。选择定时器为编码器模式,设置为不分频,最大计数值为65535,使能自动重装载,并选择TI1和TI2两路输入,实现四倍频效果。配置完定时器2和定时器4后,需要再使用一个定时器,利用其产