- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 QT--编写自己的TCP/IP上位机软件--demo
之前做项目一直是别人负责做上位机软件,我负责调试硬件程序,定好协议各干各的就行了,但是渐渐地我发现总是有很多内容在调试中会发生变动,而且协调起来周期很长,还是自己能写上位机软件比较方便。下面整理了一个我最近做的Qt项目Demo,主要用于以后新项目编写上位机的框架用。QT版本:5.14.2语言:C++通信方式:TCP/IP1.打开工程打开工程文件夹中的EQAT_Debug.pro文件勾选需要的编译方式后点击configure project这样就成功打开工程了。2.编辑工程内容在For
2022-05-25 17:25:50
3701
原创 STM32F103C8T6——FLASH读写进入硬件错误
今天跑程序发现在FLASH读写过程中程序会跑死并跳转至HardFault_Handler,在网上查阅资料说有可能是首地址没有对齐4字节的问题,不过我stm32应该不存在这个问题,于是我打算改变一下读写宽度试试:我之前用的是双字写入和读取,先将写入函数改为单字模式:FLASH_TYPEPROGRAM_DOUBLEWORD改为FLASH_TYPEPROGRAM_WORD,再将偏移量改为4,所有的uint64_t改为uint32_t,下面是修改后的读写函数。uint8_t FLASH_EEPROM_Write
2022-05-25 11:41:52
3246
原创 FreeRTOS 多任务系统——任务切换、任务管理方式心得
目前在进行对使用FreeRTOS的项目的代码升级,之前采用的主逻辑任务切换模式:由一个任务来进行逻辑上为串行的不同功能切换,其他任务分别负责通信实时传输、传感器检测和电机控制,系统中断中采用变量传递参数而非二值信号量。这个模式有两个问题:(1)传感器的信号传递过于复杂:当一个传感器信号(如上升沿)到来时,改变传感器标志变量的值,然后等待任务轮询到该变量的改变,再改变任务中的逻辑步骤变量值,来使任务下一次轮询时进入下一步逻辑,且任务通过轮询来不断检测来自队列的逻辑执行命令。这样的机制会导致传感器信号传递的
2022-02-09 09:20:43
757
原创 STM32CUBEIDE 学习笔记(八)FREERTOS+队列+多串口通信+CAN通信+多任务系统优先级设计
最近在做的一个项目,由于系统需要对通信数据的无丢包执行(即便由于前面的指令而较晚执行),通信指令又可能会有间隔很短的接收情况(间隔50ms以内),因此FREERTOS的队列传递数据方式我认为很适合这个系统,进而进行了尝试。这里会将途中遇到的任务优先级分配问题、结束任务时系统卡死、CAN总线通信问题、GD32F103替代方案尝试问题、系统中断使用二值信号量卡死问题、系统断连仿真器时无法正常启动问题,及其解决方法进行说明。一、生成系统初始化代码利用STM32CUBEIDE可以很方便地生成初始化代码,少去了很
2021-10-27 08:54:36
8315
4
原创 STM32CUBEIDE(MX续)学习笔记(七)——FREERTOS+DMA+队列+循环数组方式进行串口收发
一、收发主要逻辑1、接收:利用DMA和空闲中断一次接收一帧的不定长数据,接收到数据后“暂停”(之后分析为何要暂停而不是停止)DMA,快速利用结构体存储接收到数据的地址和长度,再利用队列能够传递结构体的特点,将所收数据的地址和长度入队,然后打开DMA接收。数据处理任务检测队列状态,只要队列中有有效数据就开始数据处理。2.发送:先将要发送的数据存入循环数组(伪)中,再利用队列将数据的地址和长度入队,利用一个串口输出的守护任务来保证数据传输的完整性,这个守护任务对地址和长度出队并使用DMA传输。二、接收代码
2021-06-30 14:04:12
2648
1
原创 STM32CUBEIDE(MX续)学习笔记(六)——:FREERTOS配置
一、创建项目(略)同MX创建项目相同二、配置注意事项系统外设NVIC配置最好放在freertos配置之后进行设置。三、配置模式选择CMSIS_V12.最小内存分配设置为643.根据芯片内存设置可分配内存大小。选中后下方会显示所选芯片的大小设置范围根据需要添加任务和队列5.其他设置维持默认即可。...
2021-06-28 15:39:40
584
原创 STM32CubeMX生成代码学习笔记(五)ADC采集+DMA传输
1.使能对应的通道2.设置DMA传输3.配置ADC4.在生成代码的main中加入/* USER CODE BEGIN PV */uint16_t ADC_Value[3];//ADC采集数组double Power_V;/* USER CODE END PV */初始化中加入:HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC_Value,1);//ADC使用DMA传输加入处理函数:/* USER CODE BEGIN 4 */
2021-06-04 15:07:03
606
原创 STM32CubeMX生成代码学习笔记(四)CAN总线配置及无法进入接收中断问题(已解决)
1. 问题描述按以下方式使用CubeMX配置STM32F103C8T6的CAN总线后,发送数据正常,接收则一直无法进入接收中断,先记录该问题于此,如日后解决会更新该文章。如有前辈在看过我的代码后能够发现我的问题,也很欢迎在评论区加以指正,感激不尽。2.CAN配置CubeMX CAN波特率配置波特率配置为1Mhz,系统时钟为64M,APB1则为32M。CAN其他配置系统NVIC配置生成代码后打开源代码,在CAN.C中添加屏蔽器设置代码void CAN_Filter_Config(vo
2021-01-21 13:57:16
5992
6
原创 STM32CubeMX生成代码学习笔记(三)串口DMA不定长收发+串口打印(更新:空闲中断队列式收发解决方案+持续接收数据后串口死机BUG优化)
在后面的项目中总结出了效率更高、更稳定等串口使用方法,故更新。
2021-01-13 14:38:20
1379
原创 STM32CubeMX生成代码学习笔记(二)普通定时器中断配置
普通定时器中断进行配置的步骤CubeMX配置定时器配置时钟,本次使用系统内部时钟配置定时器中断优先级生成代码后打开工程文件在主循环while()前的用户代码处增加定时器中断开启代码: /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim2); /* USER CODE END 2 */在stm32f1xx_it.c中的对应定时器中断服务函数中找到:void TIM2_IRQHandler(void){ /
2021-01-08 11:07:07
854
原创 STM32CubeMX生成代码学习笔记(一)中断优先级配置后没有生成相关代码问题
STM32CubeMX生成代码学习笔记(一)中断优先级配置后没有生成相关代码问题在CubeMX中配置中断优先级后查看代码会发现似乎设置的优先级并没有生成相关代码,只在初始化中有一个默认组4优先级设置。如下图生成代码后发现代码中显示是这样的其实这是CubeMX的默认设置,自定义配置的相关中断优先级设置在下方的**HAL_MspInit();**函数中。打开函数就能看到自己的中断优先级配置了...
2021-01-07 17:06:42
1988
3
STM32 串口DMA不定长收发+串口打印(更新:空闲中断队列式收发解决方案+持续接收数据后串口死机BUG优化)
2023-04-10
上位机软件--demo
2022-05-25
基于HAL库的STM32F1系列单片机CAN总线收发例程
2021-10-27
FreeRTOS_default.zip
2021-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人