STM32
李某人_1
这个作者很懒,什么都没留下…
展开
-
17年电赛的板球控制系统,PID算法的C程序实现+OpenMV的图像处理(颜色识别)
练习了17年电赛的板球控制系统,主要用到两个,一个是PID,另一个是OpenMV的图像处理(颜色识别)PID:#include "main.h"#include "stdio.h"void PIDx_init(void);float PIDx_realize(float speed);void PIDy_init(void);float PIDy_realize(float speed);#include "PID.h" /******************* X轴PID **原创 2021-08-03 14:08:17 · 2667 阅读 · 1 评论 -
STM32滤波电容个数和大小的确定
在数据手册中查到了关于STM32的供电和供电电源得滤波电容得多少,以前还好奇芯片旁的滤波电容是怎么确定个数的,原来是根据使用的IO数量加上的,原创 2021-07-03 18:32:05 · 2672 阅读 · 1 评论 -
HAL库串口接收定长数据包,数据有结尾标志。
HAL库串口接收不定长数据包,数据以’\0’为结尾标志。串口中断:uint8_t USART1_Receive_message [50]={0};uint8_t Receive_Number=0;//一次性接收了多少个数据uint8_t Receive_times=0;//接收信息次数uint8_t USART1_Receive_message_buffer [1]={0};//一次接收一个void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huar原创 2021-05-27 13:36:08 · 1719 阅读 · 1 评论 -
(硬件SPI)对于清幕函数使用数组,加快SPI硬件的单个数据发送速度
对于清幕函数使用数组,加快SPI硬件的单个数据发送速度void LCD_Clear(uint16_t Color){ uint8_t Color_buff[320*2]={0x00}; uint32_t i=0; for(i=0;i<320;i++) { Color_buff[2*i]=Color/256; Color_buff[2*i+1]=Color%256; } extern SPI_HandleTypeDef hspi1; LCD_Set原创 2021-05-24 14:40:56 · 262 阅读 · 0 评论 -
MDK错误代码
原文地址:https://www.cnblogs.com/chris-cp/p/3900766.htmlMDK常见错误详解集合错误代码及错误信息 错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Err转载 2021-05-23 11:19:20 · 1920 阅读 · 0 评论 -
HAL库使用PWM
HAL库使用PWM HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,197);原创 2021-05-21 12:16:40 · 950 阅读 · 0 评论 -
HAL库使用IIC
HAL库使用IIC选择主从模式和速度直接调用IIC函数函数原型: * @brief Write an amount of data in blocking mode to a specific memory address * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @par原创 2021-05-21 11:29:29 · 3029 阅读 · 0 评论 -
OpenMV物体分类和颜色识别两种模式通过串口发送,与STM32通信。
import sensor, image, time, math,os, tffrom pyb import UARTfrom pyb import Pin, Timer# 50kHz pin6 timer2 channel1uart = UART(3, 9600)buff=0while(True): while( uart.any() ): temp = uart.readline().decode() buff=temp if tem原创 2021-04-22 19:11:34 · 2130 阅读 · 2 评论 -
OpenMV 驱动自己的LCD屏(修改后)
OpenMV 驱动自己的LCD屏所以在写这个代码之前参考一位老哥的代码,但是他使用的是OpenMV V3,我的是OpenMV V4 H7 Plus,运行他的源代码后发现并不能显示。所以我在他的代码基础上进行了更改,来适配新版本的OpenMV。其中最重要的更改就是write_image()这个函数,OpenMV返回的image对象并不能直接拿来给SPI发送,因为他会丢掉GRB565 16位数据的低(或高)八位,所以,我又开辟了一个新的数据缓存区:fbuf = bytearray(320)#建立帧缓冲原创 2021-04-22 18:33:15 · 14920 阅读 · 93 评论 -
1.3TFT LCD (ST7789)镜像操作 适配三棱镜
三棱镜会将LCD镜像,所以要在LCD上写镜像操作在ST7789数据手册中找到镜像的命令:也就是对D6位进行置1 其他置0即可用计算器的程序员模式:即先写命令0X36,然后写数据0X40 Lcd_WriteIndex(0x36); Lcd_WriteData(0x40); //镜像显示 //Lcd_WriteData(0x00); 正常显示...原创 2021-03-05 20:25:09 · 3865 阅读 · 12 评论 -
调试LCD问题汇总
调试LCD问题汇总一、LCD帧数问题:1. STM32F103C8T61.8寸 128*1602. STM32F411CEU61.8寸 128*1601.3寸240*240二、复位后白屏问题:1.LCD_Res引脚复位时序问题一、LCD帧数问题:1. STM32F103C8T6HSE 晶振的问题导致刷屏速度慢。STM32F103 ,虽然SPI速度可以达到16M/S 由于刷新运算所需的时间,实际当SPI速度高于4.5以上时,再提升SPI的速度已无法提升刷新率。 应提升主频速度。主频36M SPI原创 2021-03-01 14:10:35 · 2234 阅读 · 0 评论 -
建立CUBEMX工程的步骤
虽然建立CUBEMX工程的步骤极其简单,但是我今天依旧又犯了一个非常低级的错误,导致以为代码问题,浪费1个小时找错。所以现在再梳理一遍,记录一下,如果下次在犯错误可以再来看看。选型高速外部时钟源串行SWD下载时钟选择编辑生成工程的名字和路径,选择IDEMDK选择include路径选择工程文件的添加最后很重要的也是经常遗忘的一步—选择ST-LINK...原创 2021-03-01 14:08:04 · 483 阅读 · 0 评论 -
STM32F4操作GPIO寄存器
GPIO的工作模式1、4种输入模式(1)GPIO_Mode_IN_FLOATING 浮空输入(2)GPIO_Mode_IPU 上拉输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_AIN 模拟输入2、4种输出模式(5)GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)(6)GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)(7)GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)(8)GPIO_Mode_AF_PP 复用推挽输出(带上拉原创 2021-02-27 14:56:58 · 1470 阅读 · 0 评论 -
CubeMX,HAL库 简单的使用ADC
在CubeMX中配置:配置解释:synchronous clock mode divided by 同步时钟模式分频asynchronous clock mode divided 异步时钟模式分频resolution分辨率data alignment 数据对齐(右)Sequencer 扫描顺序 Sequencer fully configurable 描通道的顺序与通道号channel number无关Sequencer not fully configurab原创 2021-02-22 18:30:10 · 1778 阅读 · 0 评论 -
VS2019 MFC字体模糊
项目名称—>属性—>安全—>启用安全设置将此注释去掉即可。原创 2021-02-07 21:34:16 · 613 阅读 · 0 评论 -
CubeMX,HAL库使用硬件SPI
CubeMX,HAL库使用硬件SPICubeMX配置SPI的模式:SPI工作方式SPI引脚和时序SPI时序图MDK代码CubeMX配置SPI的模式:分别是:全双工STM32作为主机全双工STM32作为从机半双工STM32作为主机半双工STM32作为从机STM32只作为主机接收STM32只作为从机接收STM32只作为主机发送STM32只作为从机发送SPI工作方式CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲为高电平CPHA:时钟相位选择,为1时在SC原创 2021-01-21 18:29:12 · 2315 阅读 · 0 评论 -
CubeMX,HAL库使用定时器和定时器中断
CubeMX,HAL库使用定时和定时器中断CubeMX配置MDK代码CubeMX配置配置为1ms计算公式:ARR: 自动重装载寄存器( AutoReload Register )(16位数据)PSC:预分频器(16位数据)TIM_CLK: ADC时钟频率(注意单位HZ 1MHZ = 1*10^6 HZ)MDK代码重定向定时器中断服务返回函数:void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim-&原创 2021-01-21 17:15:46 · 1909 阅读 · 0 评论 -
CubeMX,HAL库使用串口发送和中断接收
CubeMX,HAL库使用串口发送和中断接收一、CubeMX界面配置二、MDK代码不得不说HAL库和标准库相比确实简单多了。。。一、CubeMX界面配置选择完 异步通讯模式 后,其余默认即可。打开串口中断二、MDK代码在/* Private define */出定义一个接收中断缓冲区/* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *原创 2021-01-21 16:51:26 · 7041 阅读 · 1 评论 -
在HAL库中的使用printf()函数和sprintf()函数
在HAL库中的使用printf()函数和sprintf()函数1.printf();2.sprintf():运行环境为:HAL库。1.printf();如果想要在串口中使用printf函数,就需要将这个函数重定向。#ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() *原创 2021-01-21 15:50:12 · 5379 阅读 · 4 评论 -
CubeMX_ADC学习笔记——ADC(DMA模式)的使用
CubeMX_ADC学习笔记——ADC的使用一、在CubeMX上创建项目工程1、创建工程2、搜索芯片型号3、双击选择芯片型号(STM32G071RBTX)4、进入界面,选择串口SWD调试方式5、选择外部陶瓷晶振6、GPIO配置7、ADC配置注 需要关注的有:8、定时器配置注 需要关注的有:9、串口配置(默认配置即可,最后记得在NVIC里使能串口中断)在MDK中修改CubeMX上创建的项目工程:效果展示一、在CubeMX上创建项目工程1、创建工程2、搜索芯片型号3、双击选择芯片型号(STM32G0原创 2020-10-31 23:24:51 · 5460 阅读 · 2 评论