STM32
文章平均质量分 71
xMcMark
这个作者很懒,什么都没留下…
展开
-
基于链表的串口接收缓存
使用链表对串口接收的数据进行缓存处理原创 2024-03-12 11:15:24 · 261 阅读 · 0 评论 -
SPWM实现方法-(2)单定时器中断更新模式
前面介绍了双定时器实现的方法,这篇介绍下单定时器实现方法二.SPWM实现方法-单定时器中断更新模式同样使用采用查表法。定时器(TIM-A)设置为PWM模式。载波:TIM-A 定时器的PWM频率基波周期:载波周期*SPWM点数例:载波f=20KHZ基波F=50HZ TIM-A PWM周期为0.05ms ,如果达到50HZ的基波输出,需要定时器在一个...原创 2019-10-22 14:40:45 · 951 阅读 · 0 评论 -
SPWM实现方法-(1)双定时器模式
最近在研究SPWM逆变的实现方法,结合一些网上资料总结了几种实现方法,同时做了一款SPWM逆变实验板,和简单的上位机控制软件。现将一些实现方法总结如下:一.SPWM实现方法-双定时器模式使用双定时器实现,一个定时器(TIM-A)用来生成PWM,另一个定时器(TIM-B)用来固定时间修改定时器(TIM-A)的PWM占空比。载波:TIM-A 定时器的PWM频率基波周期:TIM-B中断时...原创 2019-10-22 14:01:41 · 1886 阅读 · 2 评论 -
stemwin 实体键使用GUI_SendKeyMsg发送消息卡死的问题
解决移植单色屏时使用了实体键发送窗口处理消息时导致卡死。在操作实体键时发送对应的消息,用到最多的是GUI_SendKeyMsg(GUI_KEY_TAB,1); //制表键,可以用来切换焦点聚焦到不同的小工具上。期间操作按键发送TAB消息时发现总是进入HardFault_Handler,但是放在emwin窗口定时里面发送TAB消息就不会进入HardFault_Handler。怀疑和KEY任务有关...原创 2019-03-29 20:29:35 · 2651 阅读 · 0 评论 -
stemwin 实现显示屏幕滑动
最近在借助一个项目学习使用emwin的使用,xia显示屏用的19264,显示的数据有限,无法shix实现一页全部显示出来,想着可以通过聚焦的控件判断是否需要翻页。zhuy主要思路是:创建父窗口(父窗口尺寸192*64),然后创建子窗口(子窗口尺寸192*120)。这样youy有一部小工具会超出物理显示尺寸,在qieh切换焦点时判断当前聚焦的小工具,然后实现翻页。一。创建父窗口和子窗口,设置窗口...原创 2019-04-04 12:21:01 · 4152 阅读 · 0 评论 -
STM32 正交编码器代码
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************* File Name : stm32f10x_encoder.c * Author : IMS Systems Lab * Date First Issued : 21/11/07*...原创 2019-04-08 16:43:03 · 1751 阅读 · 0 评论 -
stemwin 19264单色屏移植
一.GUIConf.C文件的修改 修改emwin内存/*********************************************************************** Defines************************************************************************///// ...原创 2019-03-29 12:39:07 · 2156 阅读 · 0 评论 -
stemwin 19264液晶屏底层驱动编写
使用stemwin会使开发界面编的简单快捷。对于单色屏19264只需要编写打点和获取点这两个函数。19264在Y方向显示上使用分页显示,即有8页 192列,所以在编写dadi大点函数时最简便的方法就是分配一块显示hua缓存,所有数据的显示都通过操作这块现存来实现。下面贴出代码方便以后查看//定义显示缓存64行192列 由于64行 必须同时操作一页所以数组定义64/8页char g_arr...原创 2019-03-30 12:31:17 · 1926 阅读 · 1 评论 -
stemwin 使用GUI_EndDialog切换页面死机的解决
最近学时使用emwin 在切换窗口时进入HardFault_Handler,后来发现在创建的窗口内没有处理WM_PAINT消息的操作,添加后在case内执行清屏,这样在切换界面时就不会发生死机。示意代码如下:static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int ...原创 2019-04-12 14:33:28 · 4461 阅读 · 0 评论 -
STM32 串口实现7位数据位 1位偶校验 1位停止位
UART5设置为8,N,1,模式串口设置为8,N,1模式 在发送数据时通过程序判断偶校验然后填到数据位的第8位,这样数据发送时就是7位数据位 1位偶校验 1位ting停止位。在接收数据时去掉数据第8位,程序连接:https://download.csdn.net/download/louyangyang91/11328585...原创 2019-07-11 13:54:09 · 6774 阅读 · 0 评论 -
PID整定方法
转自:https://www.zhihu.com/question/27478212/answer/136494252知乎用户 17 人赞同了该回答个人总结的,希望有所帮助,都是平时搜索到的,然后整理的干货1.在不发生震荡时,增大比例系数,减小积分时间(增大积分系数)。超调过大,则增大积分时间(减小积分系数)。若想加快响应速度则可减小积分时间(增大积分系数)。2.确定...转载 2019-10-22 15:50:00 · 41200 阅读 · 4 评论 -
STM32F103VET6利用片内FLASH虚拟U盘,使用文件复制方式实现IAP
在原子论坛偶尔搜到一篇 利用STM32片内FLASH虚拟U盘,使用文件复制方式实现IAP的帖子http://www.openedv.com/forum.php?mod=viewthread&tid=39012&extra=page%3D1 按照楼主提供的代码修改了一下发现不能用,仔细阅读相关zizi资料(《5 分钟用 STM32的内置 Flash 做一个超小 U 盘》)发现了我用...原创 2018-11-08 20:42:43 · 8642 阅读 · 2 评论 -
lwip2.1.0 pool的声明和pool的地址指针数组
/*lwip2.1.0 POOL的声明和获取每个pool的地址*///-----------------------------------------------------------------------------------//lwip-2.1.0\src\core\memp.c//声明每种类型的pool#define LWIP_MEMPOOL(name,num,size,de...原创 2018-10-31 21:24:53 · 559 阅读 · 0 评论 -
利用宏定义__DATE__和__TIME__做软件版本控制
利用C的预定义符号__DATE__和__TIME__获取软件编译时间,可用来设置系统默认时间或者作为版本更新时间# include <stdio.h># include <stdlib.h>#include "..\MALLOC\malloc.h"//时间结构体typedef struct{ vu8 nHour; vu8 nMinute; ...原创 2018-10-31 19:18:32 · 21301 阅读 · 2 评论 -
RX8025AC INTA周期电平输出的疑问
最近在用RX8025做RTC 这个芯片功耗挺低:0.48ua/3.0V(Typ)。满足低功耗要求,并且带有闹铃中断输出可以作MCU定时唤醒使用。INTA周期输出有两种波形(1)脉冲波形(2)电平中断波形。脉冲波形看下图,分2HZ和1HZ在使用的时候可以周期输出,但是我想用分钟输出中断只能选用电平中断波形。可是后来发现设置好寄存器后INTA只能输出一次触发中断,以后INTA就一直低电平。后来仔细看寄原创 2016-03-24 13:47:29 · 3470 阅读 · 0 评论 -
STM32 PC13 PC14 PC15 驱动LED配置
用STM32F103C8T6引脚分配好了,发现用到了PC13 14 15 引脚,在网上搜索得到以下代码发现PC13可以闪烁LED,PC14 PC15 就不行。仔细看了下说明书发现需要备份区域由VDD供电才可以。把VBAT接到VDD上重新上电3个LED就可以闪烁了。手册说不能驱动LED,我把LED用灌电流的接法(共阳极)每路串接2K电阻,一共2MA的电流。发现也没什么问题,长时间点亮测试了一下芯片也原创 2016-03-29 09:27:02 · 10289 阅读 · 2 评论 -
STM32F4 RTC的使用
比较F1的片子对于F4的RTC来说有很大提升,F4的RTC提供了日历时钟和两个可编程闹钟中断,一个周期性可编程唤醒标志。这样很方便设置系统时间,并不会像F1的RTC那样要自己计算年月日时分秒。F4的RTC是一个独立的BCD定时计数器,系统可以自动将月份天数补偿为28、29(闰年)、30、31天。并且还可以进行夏令时补偿。由此可见RTC,下面贴出代码方便以后查看(这里特别提一下RTC_Alarm原创 2016-05-26 10:09:47 · 11775 阅读 · 1 评论 -
STM32 HSE初始化失败的解决以及HSI初始化
偶然遇到一个问题,假设HSE初始化失败怎么办,库函数内没有提供处理只是写了 if (HSEStatus == (uint32_t)0x01){。。。} else { /* If HSE fails to start-up, the application will have wrong clock configuration. User ca原创 2016-04-21 15:35:17 · 9990 阅读 · 0 评论 -
STM32 USB的DFU功能
最近用到USB,后来发现了STM32F103可以程序实现DFU,在网上搜到代码对比官方文件发现是大容量FLASH的DFU,我用的是STM32F103C8T6,属于中容量。自己对着官方例程修改了网友的代码,改成中容量后可以使用DFU更新固件。修改过程中要注意几点1.在库函数“void SystemInit (void)”结尾处添加APP程序起始地址,向量表偏移量,开全局中断(在dfu中关闭了中断原创 2016-07-26 16:50:56 · 25048 阅读 · 6 评论 -
STM32F030的IAP应用简介
程序收尾总想着以后更新的方便性,采用在应用编程(In Application Programming),通过Bootload引导单片机自己往程序存储器里写数据或修改程序。下面简介STM32F030的IAP方法。不同于STM32F1系列,F0没有中断向量偏移寄存器。所以在APP程序的开头要添加以下代码。为什么这样做??可以看到函数用了for循环将矢量表拷贝到0 x20000000 SRAM的原创 2016-09-23 19:27:01 · 5178 阅读 · 0 评论 -
基于链表的时间片轮询程序结构
通过链表添加时间片程序,程序执行后依次查询节点时间片判断是否执行节点函数u8 task_add(uint16_t id,uint32_t NeedTime,void *func,u8 En) 添加任务函数,同时通过NeedTime设置轮询时间,u8 En用来使能节点函数是否执行。void task_TickCut(void)函数放在SysTick 1ms中断内执行时间片递减操作。void task原创 2017-05-17 09:16:51 · 1490 阅读 · 3 评论 -
STM32 输入捕获模式的滤波器设置
一.设置TIMx_CR1的CKD[1:0]位,设置时钟分频因子得到fDTS。如下图:二设置TIMx_CCMR1寄存器的IC1F[3: 0]位。滤波采样频率和采样次数。如下图举例:定时器输入时钟频率fCK_INT=72M。CKD[1:0]=原创 2017-12-29 13:03:54 · 10074 阅读 · 6 评论 -
STM32F103 CAN通信的滤波器设置
刚开始接触CAN通信,测试过收发后,还需要使用标识符过滤来实现固定节点的数据收发。记录一下“屏蔽位模式”下滤波参数的设置。发送代码如下://can发送一组数据(固定格式:ID为0X123,标准帧,数据帧) //len:数据长度(最大为8) //msg:数据指针,最大为8个字节.//返回值:0,成功;// 其他,失败;u8 Can_Send_Msg(u8* msg,u8 len)...原创 2018-04-09 15:34:00 · 5154 阅读 · 2 评论 -
ADS1248 寄存器配置和通道转换
ADS1248是TI的一款24位delta-sigma(ΔΣ) 、2KSPS、8通道(4通道差分)ADC芯片。TI官方有RTD设计方案,参考文档做了一板4通道3线PT100温度采集。调试ADS1248过程中遇到一些问题,记录下来方便以后使用。参考代码:ADS1x4x Firmware Example Code1》在配置寄存器的时候一定要注意将START引脚拉高在配置,否则配置不成功。2》在配置过程...原创 2018-04-20 11:00:52 · 11827 阅读 · 5 评论 -
PC通过串口助手如何给单片机发送小数,单片机接收后如何处理?
两种思路,供参考。1. 原始字节按原始字节数据发送,这也是我个人比较倾向的方式。首先,位、字节和字节流本身没有任何意义,如果按约定的方式去解析,才能有具体的含义。用什么约定方式呢?使用符合IEEE 754的浮点数标准,每个浮点数为4个字节,按标准解析就可以了。其实这个标准,包括STM32在内的很多微控制器,都是支持的,内部的表达方式都是一致的,而且效率很快。技巧就是定义好一个联合体,这一步很关键:...转载 2018-10-17 09:46:29 · 8413 阅读 · 1 评论 -
关于STM32使用RTC唤醒停止模式的设置
工程中用到低功耗的控制,本来想使用待机模式,后来发现待机后所有IO口为高阻态,这样对于一些IO口控制的外设有些不妥,想过外部上拉一个电阻可是功耗不好控制放弃该方案选用停止模式。停止模式后IO口保持停止前的状态,但是不像待机模式那样可以轻松通过闹钟唤醒,只能通过中断线实现唤醒。为了实现RTC闹钟唤醒搜得一段代码,现贴过来分析一下。void RTC_EXTI_INITIAL(Functiona原创 2016-03-07 19:06:06 · 38559 阅读 · 10 评论