自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32 HAL库定时器触发DMA并口数据传输

第三种就是DMA的方式,这种应用在电机精准步进控制上比较多,我打算通过这章方式应用到数据传输中,因为传输速度比较快,如果人为进行管脚输出我试过,16byte的数据即使在80MHz的时钟下也得50us左右,因为准备用DMA的方式。PWM中Pulse与占空比有关,当定时器计数递增模式下,计数值从0开始,当CNT的值小于CCRx(也就是Pulse),则输出CH Polarity的极性,当大于CCRx则输出相反极性,当CNT的值=ARR(counter period),则定时器溢出重新开始计数。

2024-01-02 16:52:16 1635 1

原创 HAL库进行CAN通讯的程序编写3

1、STM32Cube MX中CAN的设置时钟的设置我所使用的芯片是STM32F103R系列的,CAN通讯采用的时钟是PCLK1,APB1 peripheral clocks的时钟。CAN的设置我们在很多资料中显示,CAN通讯的波特率是(SS+PTS+PBS1+PBS2+SJW)个Tq,在STM32Cube MX中我们可以通过预分频系数,PBS2段长度和PBS2段长度,这几个参数来设定波特率,并且根据设置会自动计算出所设定的波特率,对新手很友好。STM32F103这款芯片CAN模式只能设置

2021-12-16 13:48:11 1773 2

原创 HAL库进行CAN通讯的程序编写说明2

关于过滤器的设置:1、过滤器是针对接收的,有两种方式分别为列表模式和掩码模式。每种模式下有16位位宽和32位位宽的差异。因此组合起来就有4种不同的设置。列表模式:将需要进行接收的报文ID写入过滤器,在接收时会根据列表进行接收,不在列表中的报文ID会进行过滤不接收。在列表模式下,16位位宽和32位位宽差异在于接收报文ID的数量不同。32位位宽的过滤器,在列表模式下每个过滤器只能写入两个报文ID,将希望存入的报文ID放入CAN_FxR1和CAN_FxR2这两个寄存器,而16位位宽最多可以写入4个报文ID,

2021-12-13 09:33:29 296

原创 HAL库进行CAN通讯的程序编写说明1

关于CAN关于CAN的基本知识网上的资料很多,此篇文章只是针对快速应用,让新手对使用CAN有一个基本的了解,如有不对的地方请指正,因为我也是首次应用。对于CAN,我们需要了解以下的一些概念: CAN的帧我们只需要知道在CAN中常用到的帧:远程帧与数据帧,设置时与RTR这个参数有关。对于CAN,CAN是用差分信号进行通讯的,就和串口通讯一样,CAN进行通讯时采用帧的结构,这个帧会包含帧起始,仲裁段等,这一类的资料很多,我在这里也不赘述,只讲实用的。我们在通讯过程中经常会用到的就是远程帧和数据.

2021-12-08 16:37:19 689

原创 STM32Cube MX设置SPI 从机出现字节遗漏的现象

现象说明:其中一片STM32L475作为SPI从机,与另一片STM32L475进行信息交互。在实验中发现SPI从机在接收字节过程中会出现遗漏字节的现象,并且都是遗漏一半字节,如发送16个字节,但只收到了8个字节。1、STM32从机配置如下其中参数的设置都是与SPI主机的设置相同。打开SPI中断,使用LL库的情况下进行程序编写。2、程序编写要进行SPI的接收时,首先要打开SPI接收使能 LL_SPI_Enable(SPI3); //使能SPI LL_SPI_EnableIT_

2021-07-01 16:56:21 1493

原创 关于嵌套结构体指针的赋值

目的:在实际使用链表时,发现无法正常对嵌入的指向其他结构体指针的内容进行赋值,故而有了以下的记录。我们在使用链表时,有时候会包含指向其他结构体的指针比如说typedef struct A{ uint8_t a1; uint8_t a2; uint8_t *a3;}atypedef struct B{ struct B *b1; a* b2; uint8_t b3;}b注意,对于指针来说就是占4个字节。如果定义的是指针类型,如下面的s1,s2所示,赋值时我们必须先要进行空间分配

2021-05-10 16:44:00 2258

原创 关于链表

一、链表的定义链表是一种数据结构,其元素个数不受限定,可以通过添加进行改变。在多节点通讯中有大量的应用。链表的基础是结构体,在结构体中不能包含与本身类型相同的结构,但可以包含有与之相同类型结构的指针。链表中的每一项都包含在何处找到下一项的信息。链表中会有一个头指针变量,这个指针变量保存一个地址,通过这个地址来找到这个链表。头指针节点指向第一个节点。(每个节点包含数据部分和指针部分)最后一个节点的指针指向必须为空null。1、链表的基本使用 链表需要包含一些基本的头文件,涉及到内存的操作和字符串的

2021-04-29 13:33:35 306 1

原创 关于指针

指针的一些基础知识1、指针的定义数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。指针变量的值就是某份数据的地址,这样的一份数据可以是数组、字符串、函数,也可以是另外的一个普通变量或指针变量。对于普通变量,在内存中需要通过占用内存的某个地址的。因此指针可以通过这个内存地址去找到这个变量。假设定义一个char a = ‘K’;,该a变量在内存地址0x110下存储了字符’K’。我们如何通过指针来找到字符a所

2021-04-29 08:43:16 308

原创 C语言中关于结构体的嵌套问题

1、结构体的定义typedef struct tag { member-list } variable-list ;创建一个别名为variable-list的结构体。其中struct是结构体关键字,tag是结构体的标志,member-list是结构体成员列表,variable-list是此结构体声明的变量。一般情况下,tag、member-list、variable-list这三个部分至少要有2个。注意只有结构体变量才会分配地址,结构体的定义是不分配地址的。结构体不能直接进行强制转换,只有结构

2021-04-28 13:59:11 13008 2

原创 RT-Thread系统关于创建线程1

定义线程栈在多线程系统中,每个线程都要分配独立的栈空间,每个栈空间通常是一个预定义好的全局数组,也可以是动态分配的一段内存空间,都是存在于RAM中,也就是所谓的栈中(RAM中一段连续的内存空间)。在多线程系统中,有多少个线程就需要定义多少个线程栈。ALIGN(RT_ALIGN_SIZE)// (2)/* 定义线程栈*/rt_uint8_t rt_flag1_thread_stack[512];// (1)rt_uint8_t rt_flag2_thread_stack[512];.

2021-04-21 15:54:31 177

原创 裸机系统与多线程系统

裸机系统裸机系统通常分为轮询系统和前后台系统。 轮询系统:在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情。通常只适用于那些只需要顺序执行代码,不需要外部事件来驱动就能完成任务。譬如说只需要实现LED翻转,串口输入等操作,但如果要加入按键操作等需要检测外部信号的事情,用来模拟紧急报警,那么轮询系统的实时响应能力就没有那么好了。轮询系统只适合顺序执行的功能代码,当有外部事件驱动时,实时性就会降低。 前后台系统:相比轮询系统,前后台系统是在轮询系统的基.

2021-04-21 11:03:35 298

原创 USART,SPI,IIC通讯协议

这篇文章以咱们实际中最需要了解,最经常使用的方面进行说明。1、USART通讯协议说明:USART在应用中需要注意的点有:波特率和通讯位数。一般通讯时需要RX,TX,GND三根线就可以了。波特率指每秒钟能传多少bit,也就是1bit所需要花的时间。例如波特率=115200,那么传送1bit所需要的时间就是1/115200约为8.6us,用示波器观察的时候可以看到1bit的脉宽时间基本就是8.6us左右。通讯位数:USART包含有开始位,数据位,停止位,校验位。开始位是一个低电平,停止位是一个高电平,校

2021-04-20 10:08:33 1270 1

原创 使用STM32Cube MX来做SDIO+FAFTS+RTC

实验目的:通过STM32Cube MX来快速配置对SD卡的使用实验芯片:STM32F4071、通过SDIO的通讯方式可以对SD卡进行读写操作,此次需要将采集的数据放置入SD卡中,通过文件管理系统对文件进行创建和读取。2、STM32Cube MX中的配置SDIO的配置:SDIOXLK clovk divide factor参数的选择与晶振有关,若出现后续挂载不成功等问题时,可以增加分频系数,降低SDIO的震荡频率。由于我存取的数据量比较大,因此选用了DMA的传输方式存入SD卡此外还需要打

2021-04-19 16:42:21 567

原创 STM32使用HAL库实现ModBus RTU从机通讯

实验目的:使用HAL库实现ModBus RTU从机通讯实验芯片:STM32F407实验平台:STM32Cube IDE1、ModBus RTU通讯介绍网上类似的介绍很多,我只以我所需要的了解情况进行介绍,主要目的是为了快速上手,实现仪器通讯。ModBus RTU只是一种特定的通讯方式,对于STM32来说就是通过串口通讯,以该协议进行解码和传数。而对于ModBus RTU协议来说,我们先从一条简单的报文来开始了解这个协议。0106000100179804从机地址

2021-04-16 16:58:10 3574

原创 STM32使用M/T法检测单路脉冲

实验目的:刚开始接触关机电机检测领域,准备探索关于定时器在检测单路脉冲中的应用,从而进行转速的检测。使用芯片:STM32F407使用平台:STM32Cube IDEM/T法介绍对于M/T法网上的资料很多,因此我只做一些简单的介绍。M法:在规定时间内检测脉冲个数来获得被测速度,适合测量高速速度。方法:在Tg时间内,设电机每转一圈发出的脉冲数为P,在Tg(单位为S)时间内测得的总脉冲数是m1,那么转速nM = 60 * m1/ (P * Tg),单位是r/min。T法:测量相邻两个脉冲间的时

2021-04-16 14:07:13 4585 6

原创 STM32F407使用HAL库进行定时器编码器设置

实验目的:刚开始接触关机电机检测领域,准备探索关于定时器编码器的应用,用来检测脉冲数,从而进行转速的检测。使用芯片:STM32F407使用平台:STM32Cube IDE1、使用编码器的原理网上介绍如下:(以下介绍为复制内容)编码器分为光电和霍尔编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到位移或者速度信息。编码器从输出数据类型上分,可以分为增量式编码器和绝对式编码器。从编码器检测原理上来分,还可以分为光学式、磁式、感应式、电容式。常见的是光电编码

2021-04-16 11:17:53 6135 10

空空如也

空空如也

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

TA关注的人

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