自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 时间片+状态机

时间片概念:通过建立一个小的时间片,将需要处理的事件在时间片的基础上完成,因此不需要通过while循环来一直做这件事。通过两个定时器可以建立两个时间片,一个快一个慢。将事件根据自身快慢要求建立在不同时间片基础上。时间片四个要素:执行标志,该标志指示当前任务是否在进行,如果。就是该事件的触发之前的计数时间。执行后延时时间:事件发生后间隔多久再次触发。按键消抖的状态机实现是创建了4个状态:按键松开,按下抖动,按下,松开抖动。创建当前状态变量,在每一个状态响应事件函数中,更改当前状态变量的值。

2023-10-16 19:46:52 120 1

原创 stm32按键消抖状态机

串口的接收配置为DMA的外设到内存方向,当DMA接收完一帧数据要清空DMA的接收通道,当接收完一帧数据,没有再收到数据则会触达空闲中断,当空闲中断被触发意味着接收完数据可以处理,处理方式为发送数据,采用轮询标志位方式发送数据。目前在学习Switch-case的方法,通过状态机方式进行按键消抖的实验,其中运用了枚举的方式定义状态标志位。对freemodbus的各个函数进行学习,freemodbus的串口收发采用的是中断收发的方式。

2023-10-13 17:20:44 171

原创 串口中断收发数据

具体的做法是在数据发送状态下,先将控制端置“1”,延时1ms左右的时间,再发送有效的数据,一包数据发送结束后再延时1ms后,将控制端置“0”发送中断的触发条件设置为按键,在主函数按键扫描,如果检测到按键按下,则发送要发送的数据senddate,而发送数据函数加上判断条件,是否sendFlag为1,若为1则发送senddate,在接收中断回调函数中判断RXNE标志位(USART_IT_RXNE),如果RXNE为1表明已经接收到数据,可以读出,将接收标志位置1,并清除RXNE标志位。

2023-10-11 17:15:20 210 1

原创 串口中断的学习

第二种方法通过外部中断,按键按下则是下降沿触发外部中断,消抖方式为:在按键中断中开启一个定时器,定时周期为 10ms,当定时时间到了以后就会触发定时器中断,最后在定时器中断处理函数中读取按键的值,如果按键值还是按下状态那就表示这是一次有效的按键。2.按键按下为上升沿触发还是下降沿触发,要根据硬件电路图决定,一般为按下下降沿触发,抬起上升沿触发。今天先进行了freemodbus的移植,解决了一些报错,补充了功能码的实现函数,还未验证。3.当gpio输入电压时,电压范围多少到多少为逻辑1,多少到多少为逻辑0?

2023-10-10 19:31:49 63

原创 串口问题解决、freemodbus移植

对昨天串口问题进行解决,发现是因为硬件的485通信芯片还有一个DR引脚,控制芯片的收发使能。因此在对USART进行接收时,需要先将DR引脚设置为接收状态。解决方案为在USART初始化时就将DR引脚设置为接收状态,在发送数据时把DR设置为发送,发送完成后再置为接收。接下来对FREEMODBUS程序进行移植,目前在mb.c文件中出现未定义变量,之后继续程序移植工作。简单整理了一下SPI FLASH的程序。

2023-10-09 19:34:55 163 1

原创 串口、DMA

实验中USART 状态寄存器的RXNE标志位一直为0 导致不能接收数据,数据寄存器DR一直为0,没有接收到数据,所以不能触发标志位,具体原因还不清楚。今天主要对串口、DMA进行整理学习,并简单移植LCD\ADC程序。在输入捕获实验中,USART接收有两种方式:1.轮询法 2.中断法。其中在存储器到外设实验中,需要usart发送一个请求才能触发--输出PWM的频率:72M/(ARR+1)*(PSC+1)DMA实验中实现了存储器到存储器 存储器到外设两个。占空比:i/(ARR+1)其中i为自定义。

2023-10-08 17:16:49 27 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除