![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
stm32学习
文章平均质量分 62
基于stm32cubemx下教程,实现快速配置stm32,达到快速上手,开发的目的。长期更新,内容包括一些使用技巧,HAL库,stm32的分析,使用经验总结
_zs_dawn
欢迎交流,一起学习
展开
-
stm32H7 HAL库 定时器触发多通道adc采样 DMA
stm32H7 HAL库 定时器触发多通道adc采样 DMA原创 2022-05-13 01:00:45 · 5445 阅读 · 2 评论 -
stm32 hal串口 dma和idle模式只能接收最后一个字符 错误记录
stm32 串口使用原创 2022-01-14 19:12:43 · 908 阅读 · 3 评论 -
rt-thread 学习(三)u8g2库的使用 进度条 为u8g2创建线程注意事项
厌倦了移植底层,而且主要是想写ui的话,感觉这种库会好一点硬件IIC软件IIC详解(非标准,参考观看)官方API 英文参考文章void u8g2_DrawBox(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h)void u8g2_DrawFrame(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h)原创 2021-10-04 18:05:47 · 1858 阅读 · 0 评论 -
rt-thread 学习(二)外部中断 添加头文件 延时函数
rt-thread 学习(二)外部中断 添加头文件 延时函数设置按键外部中断开启硬件定时器初始化配置部分延时函数添加头文件设置按键外部中断#include <rtthread.h>#include <rtdevice.h>#include "board.h"#define DBG_TAG "main"#define DBG_LVL DBG_LOG#include <rtdbg.h>#define B1_PIN_NUM GET_PIN原创 2021-10-03 02:22:24 · 4053 阅读 · 0 评论 -
rt-thread学习(一) 创建led闪烁 加入串口设备 pwm配置 modbus主/从测试代码
rt-thread学习(一) 创建led闪烁 加入串口设备 pwm配置 modbus主/从测试代码led灯闪烁加入串口设备使用cubemx 配置hse配置pwmfreemodbus 测试代码freemodbus 从机测试代码led灯闪烁 #include <rtthread.h> #include <rtdevice.h>#define DBG_TAG "main"#define DBG_LVL DBG_LOG#include <rtdbg.h>#inclu原创 2021-10-02 04:09:46 · 2251 阅读 · 4 评论 -
stm32开发板调试问题记录----去除flash读保护以及debug进不去main.c的问题
stm32调试问题记录起因去除flash读保护debug进不去main.c的问题起因date:2021.9.20调试 前端时间 画好的 stm32——usb数字按键芯片:stm32f401ccu6买到后才发现是 拆机片,内有程序且带读保护。烧录程序的时候会报错去除flash读保护先确保能够正确读到 芯片 id ,确定只是flash被锁然后下载 stlink -utility连接stlink 和开发板打开并选择选择level 0 然后 apply到此已经将flash 读原创 2021-09-20 18:28:16 · 603 阅读 · 0 评论 -
移植freemodbus库 随记
这里写目录标题初始化支持三种模式状态参数总中断开关开启rtu串口使能开启定时器初始化//初始化函数//初始化 RTU模式 从机地址为1 USART1 9600 无校验 eMBInit(MB_RTU, 0x01, 1, 115200, MB_PAR_ODD); eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity ){ eMBErrorCode原创 2021-09-19 13:54:12 · 139 阅读 · 0 评论 -
DIY一个usb数字键盘(二)逻辑部分 基于stm32cubemx HAL库 usb hid协议
自制usb数字键盘(二) 基于stm32cubemx HAL库 usb hid协议前言按键部分buttom.h 按键头文件部分buttom.c 按键 实现部分usb键盘部分usb键盘头文件部分 keyboard_hid.husb键盘 实现部分 keyboard_hid.c最后的主函数结语前言要写一个比较规范的 系统还是比较复杂的。而这次的逻辑代码部分的编写,只是个人觉得较为规范,所以单写一篇,附有注释,和部分讲解。前一篇,关于基本配置和知识:自制usb数字键盘(一)配置部分 以及,可以先看看我之前原创 2021-09-09 16:27:42 · 1334 阅读 · 5 评论 -
DIY一个usb数字键盘(一) 基于stm32cubemx HAL库 usb hid协议
基于HAL库的自制usb数字键盘 (一)前言:在代码实现部分,我在下一篇文章讲解,本文会较为详细的讲一下基本设置和协议设置开发环境STM32cubemx初始化经典时钟经典 swd5ms的 tim2 (这个时间很重要,记住)(可自行修改)GPIO勾上usbcustom hid参数hid 描述符keil代码编写参数修改复制报文数据发送非常重要的一点就是要及时弹出下一篇类似文章:usb 手柄前言:在代码实现部分,我在下一篇文章讲解,本文会较为详细的讲一下基本设置和协议设置开发环境单片机:stm32f10原创 2021-09-09 15:44:52 · 5184 阅读 · 7 评论 -
学习笔记 --extern C 以及 c语言 函数指针实现 回调函数 (具体实例,清晰)
extern C 以及 c语言 函数指针实现 回调函数 (具体实例,清晰)extern c 结构函数指针回调函数回调定义回调实现extern c 结构出现在 .h 头文件中因为 c++ 和c引用头文件的机制稍有不同为了使c++兼容 .h的头文件,使用这个结构#ifdef __cplusplus //兼容c++ 的头文件定义 extern "C" { #endif ////函数声明//#ifdef __cplusplus} #endif函数指原创 2021-09-05 00:32:01 · 652 阅读 · 0 评论 -
下推式磁悬浮制作 基于stm32 和ah3503
下推式磁悬浮制作材料模块实现L298Nah3503控制器部分更新于2021.9.4材料1.4个线圈2.磁环 外径100mm,内径60mm3.100*100 mm pcb4.lm324(或其他运放芯片)5.6个 可调电阻,电阻6.l298N 驱动模块7.若干个排针,杜邦线8. 12V 1A的 电源适配器9. ah3503 霍尔传感器3个10.stm32f401ccu6 (价格便宜)11. 钕铁硼磁铁 最好买60mm或者50mm 且比较厚 ,应为磁环 产生的磁力比较大原创 2021-09-04 01:53:33 · 2611 阅读 · 0 评论 -
stm32cubemx stm32f4之 使能 硬件fpu 和使用dsp库 测试结果(详细)
stm32cubemx新建完成的stm32f4系列的工程这里应该是默认开启的可见 使能硬件fpu 未开启,为灰色查看定义可见可以发现这两个 没有进行定义于是加入宏定义点ok ,重新编译可见开启了 硬件fpu加在需要使用的文件里面我直接加在main.h 里板子没到,还没测试,但应该无内鬼...原创 2021-08-26 19:55:45 · 2539 阅读 · 2 评论 -
keil4 debug调试 实时导出变量数据 matlab绘图
keil debug调试技巧 查看数据前言步骤前言最近需要实时采样逆变器输出电压,用串口收发时间太长,影响控制。于是决定放在一个比较大的数组里。但在 watch windows 里难以观察。于是找到了可以将数据输出的方法,可以导出至其他软件进行观察。步骤stm32连接stlink 打开keil 进入debug模式找到输入FUNC void s(void) { exec("log > MyValues.log"); printf ("data=[\n原创 2021-07-26 02:21:44 · 2838 阅读 · 0 评论 -
1.8寸8针spi 显示屏驱动代码 stm32cubmx
1.8寸8针spi tft显示屏驱动代码开发环境stm32cubemx配置代码实现开发环境单片机:stm32f103c8t6软件:stm32cubemx,keilstm32cubemx配置spi的配置与oled的配置一致,只是多了个背光控制口点这里io口的配置和名字如下代码实现lcd.c先是最主要的核心函数#include "LCD.h"#include "spi.h"#include "GUI.h"unsigned char Num[10]={0,0,0,0,0,0,0,原创 2021-05-24 01:49:09 · 2914 阅读 · 4 评论 -
stm32cubemx 单通道adc采集 dma版
**stm32cubemx 单通道adc采集 dma版**开发环境stm32cubemx配置代码实现开发环境单片机:stm32f103c8t6软件:stm32cubemx,keil其余的时钟等操作与其他一致.stm32cubemx配置勾选adc1,随便勾一个引脚,开连续模式,将采样时间拉到最大选择adc1的dma循环模式,地址自动增加,字节大小,half word 即每次增16位勾个串口工程其余配置一致代码实现创建DMA的缓存区uint16_t adc_buf[2]={0}原创 2021-05-24 00:08:46 · 1300 阅读 · 1 评论 -
自制游戏手柄joystick stm32 hal usb协议
自制游戏手柄ps:开发环境初始配置代码编写推荐工具:参考文章:ps:耗费了一天去了解怎么实现usb协议下的HID传输,因为各个文字没有说清楚,导致我数据的内容总时接收不到或者错位,所以特意下一篇文章来具体指出了各个步骤的坑开发环境windowsstm32f103rct6stm32cubemxkeiljoystick模块(5针)两轴初始配置开启时钟USB时钟 一定 48M打开USB配置HID配置完成代码编写打开usbd_hid.c应为stm32cbemx 自动生成原创 2021-04-27 01:10:32 · 8719 阅读 · 4 评论 -
stm32 adc配置 hal库 异步采样 不同时候开启单个adc的不同通道的采样方法(代码版)
stm32 adc配置 hal库(代码版)配置需要使用stm32的一个adc,根据不同模式采集,开启不同的通道。配置单片机:stm32c8t6stm32cubemx:其他操作不变,adc就勾选引脚和选择转换周期这是自动生成的代码可以看到,很多都时和stm32cubemx上的配置一样的,我们可以通过直接写改这里,来完成代码的配置。void MX_ADC1_Init(void){ ADC_ChannelConfTypeDef sConfig = {0}; /** Comm原创 2021-04-10 08:32:31 · 1415 阅读 · 2 评论 -
HAL库下的systick 底层配置 HAL_Delay实现原理 微秒级延时(非中断)以及一些重写延时的小坑 关于HAL_Delay的使用问题
systick HAL_Delay实现原理 微秒级延时(非中断)以及一些重写延时的小坑 关于HAL_Delay的使用问题HAL_Delay实现原理HAL库下的systick 底层配置实现微妙级的延时重写延时的小坑关于HAL_Delay的使用问题HAL_Delay实现原理HAL_Delay 底层是配置systick进行1ms进行一次中断,没进入一次,有一个全局变量 uwTick 就加1上面这个函数就是systick的中断函数下面就是 计数的函数void SysTick_Handler(void)原创 2021-04-08 23:54:44 · 4478 阅读 · 6 评论 -
stm32 adc 测量偏差的简单解决方案 hal库
最近用stm32 去检测电压发现会偏差70mv左右,而且上下波动20mv左右于是找到了一些解决方法1.最重要的一步在初始化adc之后,进行校准 MX_ADC1_Init(); HAL_Delay(200); HAL_ADCEx_Calibration_Start(&hadc1);关于延时本人经测试,并没有太大差别,但又帖子说明,可以减小误差,自行测试。2.延长采样时间(1)在配置中修改(2)在代码中修改找到下面代码中simplingtime,右键查找ADC_SAMPLETI原创 2021-04-06 01:25:01 · 4666 阅读 · 1 评论 -
stm32cubemx+vscode+iot-link 开发stm32
stm32cubemx+vscode+iot-link 开发stm32软件下载vscode(1.52或着以前的版本,日志里写着支持1.49,但好像1.52也可以,但至少1.53不行)STM32cubemx具体操作软件下载vscode(1.52或着以前的版本,日志里写着支持1.49,但好像1.52也可以,但至少1.53不行)下载好vscode后,在拓展商店,下载c/c++,下载iot-linkSTM32cubemx百度具体操作1.在stm32cubemx里,新建工程,与平时不同的是,把平常选择原创 2021-04-01 13:03:21 · 597 阅读 · 1 评论 -
STM32CUbeMX之两路互补pwm波 以及死区时间设置
STM32CUbeMX之两路互补pwm波 以及死区时间设置STM32CUbeMX的配置keil工程里的代码实现验证结果芯片:stm32f103zet6STM32CUbeMX的配置1.基本时钟配置2.debug3.开启定时器1(这里的参数可以自行配置)keil工程里的代码实现 /* USER CODE BEGIN 2 */ HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);//开启互补pwm HAL_TIM_PWM_Start(&am原创 2021-03-16 01:31:12 · 5600 阅读 · 2 评论 -
stm32cubemx 串口接收不定长数据
2021.3.9stm32cubemx 串口发送不定长数据配置 :usart1 勾选中断。代码如下全局变量#include <string.h>uint8_t date[255];uint8_t temp;uint8_t i=0;主循环while (1) { HAL_UART_Receive_IT(&huart1,&temp,1); /* USER CODE END WHILE */ /* USER CODE BE原创 2021-03-09 00:46:26 · 888 阅读 · 0 评论 -
STM32CubeMX HAL库矩阵键盘 定时器
简单理解上拉输入:即在悬空状态下,将输入信号,上拉成高电平下拉输入:即在悬空状态下,将输入信号,下拉成低电平将PB 3,4,6,7设置为,输出,将PB 9,10,11,12设置为上拉输入因为stm32的io口改输出,输入模式比较麻烦,所以,选择一行一行读取的方法STM32CubeMX配置如下:设置定时器 time2 每0.1秒进入一次中断串口输出其他时钟,debug等配置,按平常一样配置重定向#include <stdio.h>#define USER_MAIN原创 2021-03-01 19:11:24 · 1826 阅读 · 1 评论 -
STM32CubeMX学习----Flash学习 HAL库 字符串写入Flash的方法
2021.1.31本文使用HAL库中的函数进行Flash的读写操作。1.Flash简介Flash就是关于平常程序储存的地方,而sram一般是存放变量的地方。Flash中的数据不会因为断电而丢失,SRAM则会。 为了保护数据的安全,Flash有安全锁,对Flash写入时先要解锁,擦除,写入,锁上。任何时候对任何型号的STm32都是这些操作 Flash中的内存分页,修改一页的内容中内容时,不支持只修改一部分,所以修改前要将整页擦除 擦除数据,就是将整页数据变成1,而数据一16位的形原创 2021-01-31 18:43:41 · 4355 阅读 · 2 评论 -
关于串口学习的总结 HAL库 STM32CubeMX
串口通信数据组成:开始位 数据位(8位或9位,单个数据为1或0)校验位(可能有可能无,奇或偶校验,即数据中的一的个数,或0的个数) 结束位(先高后低)波特率:越高数据传输速率越快,但可能越不稳定 常用 115200 9600 与时钟频率有关 ,串口相关函数取得接受状态,若接受完成返回HAL_OKDMA direct memory access 直接寄存器访问DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速..原创 2021-01-31 00:26:18 · 529 阅读 · 1 评论 -
7针0.96寸OLED_SPI的驱动代码 STM32CubeMX HAL库
请注意以下代码只适合硬件SPI以下为头文件内容#include "main.h"// 常量定义#define u8 unsigned char // 将unsigned char 定义简写#define MAX_LEN 128 // 列最多像素点#define OLED_CMD 1 // 写命令#define OLED_DATA 0 // 写数据// 定义字体枚举,值为字体的高度enum Font_Size {SMALL = 6 , MEDIA =原创 2021-01-27 13:26:56 · 3559 阅读 · 6 评论 -
0.96寸oled显示动画软件和步骤
0.96寸oled的SPI版本移植成功,并成功显示动画。制作动画步骤使用软件:第一个软件:进行gif的帧数删减,画面优化,最重要的是大小的改变0.96寸oled为 分辨率 128*64常用这三个功能第二个软件:将gif一帧一帧拆分。勾选红框,更方便第三个软件将所拆分图片打开,选择BMP格式,调整二级化程度(影响动画显示的终极因素),以及勾选颜色反转!!!(这个软件可以直接输出数组,但我的数组显示出来的是错误的)第四个软件:负责将图片转化成数模按照上面对应配置,然原创 2021-01-21 00:56:31 · 5815 阅读 · 2 评论 -
stm32cubemx之检测pwm的频率 HAL库
debug时钟串口TIM2的时钟和渠道TIM2的定时时间和pwm占空比设置TIM3的时钟和定时时间只用勾 EXIT(不同io口不一样)和TIM3的中断,其他随意printf重定向,TIM3中断,外部中断计上升沿个数uint16_t pwm_valve=0;int fputc(int ch,FILE*f){ HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xFFFF); return ch;} v原创 2021-01-19 21:10:48 · 2034 阅读 · 2 评论