自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Gnuradio模块使用介绍5------------filter系列

在firdes.cc文件中可以看到多种滤波器taps的生产代码,这里我们分析一个低通滤波器的设计作为例子。这是最后一段计算脉冲响应的代码,涉及到了DSP中的使用窗函数法设计FIR滤波器,这里需要比较熟悉滤波器的细节,我也迷迷糊糊的。接下来讲的不仅是gnuradio的重头戏,也是数字信号处理里关键的一环---滤波器的处理。作者也是不断的看源码进行学习,理解可能会存在偏差或者错误,希望各位读者看到后能指出相互促进。然后是计算抽头个数,这里的ntaps的公式看的有点迷,不知道为什么是这样设计的。

2026-03-27 14:01:06 20

原创 Gnuradio模块使用介绍4.3------------pack系列

找到unpack_k_bits_bb_impl.h,是不是和打包的块非常像呢,那根据经验,就需要找到他的父类块头文件unpack_k_bits_bb.h和unpack_k_bits.h。unpack_k_bits_bb.h是对块的抽象,直接看unpack_k_bits.h。get_bit_be1这个函数主要的工作就是从字节中提取bit,bit_addr是bit的地址,举个例子,每一个字节取2bit,bits_per_chunk=2.我的第3个bit来自哪个字节的哪一位。

2026-03-25 16:37:26 38

原创 Gnuradio模块使用介绍4.2------------pack系列

len_tag_key.empty()),d_align_output(align_output),d_endianness(endianness)初始化,按照上面头文件的默认参数align_output=0,endianness小端,不关心len_tag_key,所以d_packet_mode=0。set_k_and_l()函数中有一个没见过的函数set_relative_rate()似乎是设置块速率的,这和我们关注的数据处理关系不大,更多是设置调度器的,跳过。k:输入流相关bits的数量。

2026-03-24 15:15:52 384

原创 Gnuradio模块使用介绍4.1------------pack系列

一贯研究我们关注的内容-数据的处理,其他内容直接不看。out-输入数据的指针,in-输入数据的指针,noutput_items一次调用需要输出数据的数量。首先直接找到实现的头文件pack_k_bits_bb_impl.h,这个类有两个私有变量,明显d_k是打包数,那d_pack是什么呢?看到引用的头文件#include <gnuradio/blocks/pack_k_bits.h>直接找到这个文件,可以看出pack_k_bits就是如何实现打包的类,实现函数是pack和pack_rec两个函数。

2026-03-24 11:24:48 17

原创 Gnuradio模块使用介绍3------------vector sink

所以直接看实现头文件,看作者给这个块赋予了什么功能。直接关注主要的函数功能。1.构造函数2.data函数。最后结合一个简单的小例子收尾,结合上面所说,理解这个代码很简单,毕竟使用python只是c++类的胶水,用来实现流图的链接。向量接收器,老规矩直接上公共头文件代码,源码给出了注释,就是每次处理向量的长度,和给数据预留出来的空间。构造函数很简单,签名看出来是只输入不输出,加上互斥量对数据进行保护,标准容器库的reserve方法,预分配空间。最后就是work处理函数,没有tag就是简单遍历和插入。

2026-03-23 13:30:17 14

原创 Gnuradio模块使用介绍2

然后直接看vector_source_impl.cc,首先直接看构造的实现。当你输入标签向量是就会执行set_output_multiple函数,我推测这个函数应该是sync_block的函数,这里不分析标签,默认是纯净的数据。在vector_source.h公共头文件中表名vector继承自同步块,构造函数中有4个参数,向量数据,是否重复,向量处理长度,标签。最后的补充就是输出数据的类型了,int8->byte, int16->short, int32->int, 加上float和complex型。

2026-03-23 12:48:56 31

原创 Gnuradio模块使用介绍一

在这个系列模块中我将会学习使用常用的gnuradio模块,记录参数效果,作用,可能还会翻阅Gnuradio的源码解析模块背后的原理。WaveForm:生成波形,正弦,余弦,脉冲,常量,三角波,锯齿波。注意使用的波形和输出数据类型的关系。Output Type:输出格式,指定了这个块输入类型。第一个模块:Signal Source 信源模块。Sample Rate:采样频率,发送数据的速率。Initial Phase:初始相位(弧度制)Frequency:波形的频率。Amplitude:振幅。

2026-03-19 17:46:39 25

原创 stm32寄存器操作笔记(二)中断篇2

这一篇主要是来介绍一下中断的寄存器怎么操作。先介绍一下整体情况。在这里假设使用PA0作用外部中断口,在初始化中将PA0设为下拉(这里本人的PA0是按键,选择下拉原因在GPIO篇中介绍过,不在重复)将该中断分为2组,有两位抢断,两位响应。主要的代码脉络已经讲完,可以按照上一节的说明加上官方的参考文档搭配使用。

2024-12-17 17:04:59 203

原创 stm32寄存器操作笔记(二)中断篇1

之后分配该中断的优先级,我们假设它的中断分组位2组,那就是2位抢占和2位响应,所以要将SCB的AIRCR寄存器的10到8位修改成101,这样我们就获得了2位抢占和2位响应。ok,这一章的理论总算是讲完了,这一部分的寄存器相当多,要搭配代码使用会更好,之后我会尽快将代码的讲解发布出来,对这一部分还不是很了解的朋友可以多看看文档,文档还是很明了的。最后一个相关寄存器,就是分配你是哪个组的,中断组和优先级位数是对应的,选择的组,就只能选择该组对应的优先级分配。这个表非常重要,是我们之后开启中断必须要查询的。

2024-12-12 21:13:49 1868

原创 stm32寄存器操作笔记(一)GPIO篇3

怎么读取呢,很简单,我们想要读取哪位就将哪位与上1,因为任何位(1和0)& 1都不会改变,而&0都会变成0,所以用来获取需要的位。对寄存器的操作是无法离开位操作的,这是基本操作,可以花时间好好了解一下,在之后的篇章中也不会在提及位操作,默认大家是了解的,不太清楚的用笔写一写也能很快明白。这里还用到了软件消抖,因为该系列只简单扼要地介绍寄存器的操作方法,所以只会主要介绍if中的判断条件,对消抖需要了解的朋友网上的资料非常丰富,可以自行搜索。也就是主要集中于GPIO的读取功能,废话不多说,直接上图。

2024-12-04 17:01:55 360

原创 stm32寄存器操作笔记(一)GPIO篇2

在函数GPIOB5_On中我们将BSRR的第5位设置为1,就是令IO5输出高电平,在函数GPIOB5_On中我们将BSRR的第21位设置为1就是令IO5输出低电平。看到GPIO的CRL寄存器这一节,这一步将CRL的20到23位与上0,相当于先把想要操控的位清空,GPIOB->CRL |= 0x00300000;可以看到低2位的11对应MODE中的输出模式,最大速度50MHz,就是意味着将该IO口设置为输出模式,最大反转速度为50MHz,再看到高两位的00,对应CNF的通用推挽输出模式。动画讲解的非常清楚。

2024-12-03 16:14:54 905

原创 stm32寄存器操作笔记(一)GPIO篇1

注意这里的两个寄存器,在后面对GPIO的操作中有有详细介绍。这里作者不太确定是否是这样,但可以肯定的是输入1时,PMOS管导通,NMOPS管截止,IO口上拉,最后GPIO口输出高电平。tips:学生党,最近一直在忙一个神经网络的作业(不使用框架纯手搓),只能说更新很不稳定,而且本人也是中途入的单片机,对知识的掌握有限,也希望读者能多多指出,相互交流,共同进步。3.GPIOx_ODR寄存器,这个寄存器的作用是记录个IO口的输出状态,因为该寄存器是可读可写,所以也可以通过写入该寄存器来控制IO口的输出。

2024-12-02 16:13:46 895

原创 stm32寄存器学习笔记

为什么会开始写这样的笔记呢,原因主要是我在学习利用寄存器操作stm外设的时候,出现最多的主要是库函数与hal库,虽然两者将底层代码包装的很好,但是对深入学习寄存器就像蒙上了一层纱,看不真切。所以就打算自己学习寄存器的一些心得与犯过的错误记录一下,方便回头学习,也能帮助一些同样的新手朋友共同进步,以此共勉。先就打算写这么多,之后与通信相关的部分也会慢慢的不上来,主要看时间充足与否。中断是单片机处理异常事件的重要手段,操作基石。stm32中寄存器功能最丰富的一部分。IO口的重要性不必多说,操作基石。

2024-11-27 10:59:30 160

原创 赛元MB0036核心开发板

(1)赛元 MB0036 核心开发板基于增强型的高速 1T 8051 内核的工业级、带触控功能的 Flash 微控制器 SC95F8767 开发,集成触控模块基ISP烧录模块。(2)滑条触摸功能:手指在滑条上从左到右划过,指示灯会跟随手指移动逐渐亮起,手指在滑条上从右到左划过,指示灯会跟随手指移动逐渐熄灭。按键触摸功能:在滑块下方有6个TK按键,当手指按下TK键时,对应的指示灯亮起,再次按下TK键时,指示灯熄灭。最上面黄色框选的区域为ISP烧录模块,用于ISP烧录。蓝色框选的区域为TK按键触摸区域。

2024-09-21 13:51:56 332

空空如也

空空如也

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

TA关注的人

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