自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大牛攻城狮的专栏

写点东西,留念青春。

  • 博客(84)
  • 资源 (9)
  • 收藏
  • 关注

原创 一文精通zynq uartlite的使用

项目实施过程中,采用zynq系列芯片,由于zynq自身PS侧仅仅提供两路串口,无法满足实际需求。这就需要从PL侧扩展出来多路串口出来。网上也有一些针对的使用步骤,但是都不够友好,缺少很多细节上的步骤,很难调试成功。本文详解一下实际实现的步骤,供大家参考学习使用。

2023-12-08 10:30:55 1539 1

原创 NB6L295M STM32 GD32 IO模拟驱动设计

MCU采用GD32,GD32基本上和STM32一样,针对NBL295M的时序操作是完全相同的.软、硬件设计已经再产品设计中实际使用。与MCU管脚连接如下表所示。软件代码采用两级级联的方式。

2023-10-12 16:47:35 960

原创 ad5665r STM32 GD32 IIC驱动设计

根据选择DAC型号不一样,这里取值不一样,我这里是使用16bit 提示一下,该类芯片是一个系列有不同的DAC分辨率,看工程实际使用的型号Quad, 12-/14-/16-Bit nanoDACs。依据不同的管脚封装的进行地址选择,这里工程中实际使用是14管脚封装,根据iic的时序图,根据时序图确定,IIC地址字节为读写分别0x3F、0x3E。MCU采用GD32,GD32类似STM32,针对ad566r的时序操作是相同的,IO模拟的方式进行IIC通信。驱动程序在AD公司提供例程上修改得到。

2023-10-11 15:11:59 804

原创 MAX17058_MAX17059 STM32 iic 驱动设计

插入电池,IC的去抖初始电压测量,以提高初始SOC估计,让他们在位于系统侧。一类:将SDA、SCL初始化为GPIO_Mode_Out_OD(普通开漏输出),后面操作IIC管脚时序的时候,就不需要配置SDA的输入输出模式了。一类:将SDA、SCL初始化为GPIO_Mode_Out_PP(通用推免输出),后面操作IIC管脚时序的时候,就需要配置SDA的输入输出模式。一般iic调试过程,会去读器件ID/版本号之类的保证和手册上说的值一样,这样我们初步判定IIC时序没有问题,这里我们读取。

2023-10-10 11:17:08 544

原创 图像文件的操作MATLAB基础函数使用

简介:MATLAB中的图像处理工具箱体统了一套全方位的标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。这里仅仅对常用的基础函数做个使用介绍。

2023-09-08 14:58:22 510

原创 MATLAB中M文件编写

所谓M文件就是将处理问题的各种命令融合到一个文件中,该文件以.m为扩展名。然后,由MATLAB系统编译M文件,得出相应的运行结果。M文件有脚本文件和函数文件两种。脚本文件不需要输入参数,也不输出参数,而会按照文件中指定的顺序执行命令序列。函数式M文件比脚本式M文件相对复杂一些,脚本式M文件不需要输入变量,也不一定返回结果,而函数式M文件一般要输入变量,并且有返回结果。避免用户输入较多命令,避免重复输入命令,打开该类M文件,单击运行或者按下F5按键,即可运行该类文件。输入如下代码,保存average.m。

2023-09-08 09:34:32 2370

原创 MATLAB创建avi文件

在MATLAB中,可以将一连串图像另存为一段MATLAB视频,然后通过调用movie函数观看。和其他MATLAB Workspace中的变量一样,可以将MATLAB视频另存为mat文件,但是这个mat文件只有MATLAB词可以打开,播放的了。AVI文件格式在windows或UNIX操作系统下均可播放,需要指出的是同通过调用movie2avi函数,可以将MATLAB电源转化为avi格式。用于avi格式的音频视频文件,返回一个对该文件的描述,只能用于avi格式的音频视频文件。测试用用例,如下所示。

2023-09-07 15:45:49 779

原创 MATLAB基础-MAT文件的读写操作

MAT文件是MATLAB格式的双精度二进制数据文件,由MATLAB软件创建,可以使用MATLAB软件再其他计算机上以其他浮点格式读取,同时也可以使用其他软件通过MATLAB的应用程序接口来进行读写操作。如果只是再MATLAB环境中处理数据,使用MAT文件格式是最方便的,这样会避免文件格式转换的带来的复杂操作。其中1处为显示代码,2处为执行保存指令后形成的文件,3为A.mat文件内容。这个比较简单,双击mat文件即可导入,也可以通过指令代码导入。MAT文件的操作比较简单,主要是同通过函数。

2023-09-07 10:36:16 4463

原创 蒙特卡洛方法使用原理解系-单位圆的面积计算

蒙特卡洛也成为统计模拟方法,提出以概率统计理论为指导的一类非常重要的数值计算方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙特卡罗,该城市以赌博业闻名,而蒙特卡罗正是以概率为基础的方法。通过实验的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,将其作为问题的解。这里可以多运行基础,看实验结果,基本上更多次运行,可能看到更准确的结果。使用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。

2023-09-06 14:48:35 292

原创 Text文件在MATLAB中读写示例基础

要将一个数组导出一个有分隔符的ASCII码文件中,可以调用save函数。在调用时,要指定-ASCII参数,也可以调用dlmwrite函数。save函数用起来比较方便,而dlmwrite函数有更大的灵活性。它允许用户把任何一个字符指定为分隔符,也可以通过指定一个值域来导出一个数组的子数组。为了便于和外部程序进行交换,以及查看文件中的数据,也常常采用文本数据格式与外界交换数据。在文本格式中,数据采用ASCII码格式,可以使用字母和数字字符。可以在文本编辑器中查看和编辑ASCII文本数据。测试用用例,如下所示。

2023-09-06 11:38:31 734

原创 MATLAB中isequal函数转化为C语言

NaN(非数字)、NaT(非时间)、未定义的分类元素和 值被视为与其他元素不相等,彼此之间也不相等。有项目算法使用matlab中isequal函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。如果所有输入是等效的,则 tf = isequal(A1,A2,...,An) 返回逻辑值 1 (true)。即使每个结构体中的字段顺序不同,isequal 也将这些字段视为相同,因为它们的值相等。函数返回逻辑值 0 (false),因为这两个矩阵有些许不同,并非完全相等。

2023-08-31 16:04:50 566

原创 MATLAB中mod函数转化为C语言

b = mod(a,m) 返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数。此函数通常称为取模运算,表达式为 b = a - m.*floor(a./m)。mod 函数遵从 mod(a,0) 返回 a 的约定。有项目算法使用matlab中mod函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。计算 23 对 5 取模。

2023-08-31 13:43:34 932

原创 MATLAB中circshift函数转化为C语言

如果p是正数则实现A以行为单位,从上到下的循环移位。如果p是负数则实现从下到上的循环移位。如果p是正数则实现A以列为单位,从左到右的循环移位。如果p是负数则实现从右到左的循环移位。有项目算法使用matlab中circshift函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。如果p是正数则实现A从左到右的循环移位。如果p是负数则实现A从右到左的循环移位。实际maltab中使用如下代码所示,其中z为96000x1列向量。

2023-08-31 13:23:31 902

原创 MATLAB中符号变量的使用方法解析

MATLAB中常常使用符号变量,这里定义符号变量的函数是syms使用方法如下syms x y z其中,x、y、z 是符号变量,可以是任意字母、数字或下划线组合而成的字符串。代码以下是一个简单的例子,演示如何使用 syms 函数定义符号变量,并进行符号计算。%定义符号变量syms x y%求解方程disp(sol);%求导disp(df);%积分disp(I);举例2代码例程代码如下syms x;ezplot(y)结果举例3代码例程如下syms a;b=a+a^(-2)

2023-08-29 20:48:47 1851

原创 使用MATLAB解算炼油厂的选址

记得有一年的数据建模大赛,试题是炼油厂的选址,最后我们采用MATLAB编写(复制)蒙特卡洛算法,还到了省级一等奖,这里把仅有一些记忆和材料,放到这里来,用来纪念消失的青春。

2023-08-29 20:15:14 610

原创 C语言实现基于数组的环形缓冲队列

在C语言编程场景中,常常需要对一段不定长数据进行缓存。这里提出一种基于数组的环形缓冲队列,解决上述场景的问题。如下图所示,首先定义数据长度为buf[8],初始化指针为in/out。这时判断in==out为true,所以表明缓存内没有数据。如果把上述缓冲数组换成二维数组,代码可以编写如下。其中in为缓冲数据的输入指针。out为缓冲数据的输出指针。

2023-08-24 15:52:23 227

原创 MATLAB打开excel读取写入操作例程

使用uigetfile函数过滤非xlsx文件,找到需要读取的文件,首先判断文件是否存在,如果文件不存在,程序直接返回,存在记录下文件的路径。

2023-08-19 15:01:31 677

原创 matlab 2016读取mif文件

mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据。生成QuartusII11.0可用的mif文件,有如下几种方式:方法1:利用自带的mif编辑器优点:对于小容量RAM可以快速方便的完成mif文件的编辑工作,不需要第三方软件的编辑;缺点:一旦数据量过大,一个一个的输入会使人崩溃;方法2:利用mif软件来生成无论使用什么编辑器,必须保证mif文件的格式如下:冒号左边是地址,右边是数据;分号结尾;

2023-08-15 17:13:36 585

原创 独立按键检测短按、长按,松手后响应操作

有项目使用独立按键检测,短按、长按。根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作。记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了。可能很难懂,这里就简单一点,只处理一个按键。并且这个按键,只检测短按、长按两种状态。

2023-06-09 20:15:40 2107

原创 C++/C按照时间命名保存bin文件

在Linux应用编程过程中,使用C++或者C语言保存、读取bin文件是比较常见的需求。这里详细记录一下使用C++保存bin文件,也可以使用C语言实现。

2023-06-09 19:49:50 1605 2

原创 Linux 应用程序信号量使用实战

在项目实施过程中,有个机制需要做两个线程之间的同步。具体需求如下:首先,线程1需要把资源读取到缓存其次,线程2才可以操作这块缓存上述两个动作顺序交替重复。

2023-06-09 18:26:03 1340

原创 stc15w404as使用keil做库,提供头文件,供调用

有个项目使用需要使用库,将代码封装起来,仅仅留下调试接口,给用户使用,调试一些参数。这样工程看起来更简单,也方便客户维护。也有一些使用场景,需要把自己的代码封装起来,这个是怕被别人窃取,自己的功夫白费了,也可以提供库的形式。当然也有如下场景当公司或者个人需要提供自己的编写的代码供他人调用时,而你或提供方并不想提供源代码(.c源代码),只想提供头文件.h(在头文件中申明函数)供他人调用,他人在调用时只需要知道调用的函数功能是什么,传递的参数是什么等,无需了解函数是怎样具体实现的。

2023-05-28 16:43:02 1946

原创 STM8、STM8S003F3P6 通过ZM470SX-MP模组实现lora通信

现在物联网就是很火,lora是避免不开的,也有个项目采用STM8S003F3P6 使用周立功的lora模组ZM470SX-MP实现lora通信。

2023-05-26 16:27:37 1355

原创 STM8、STM8S003F3P6 实现PWM控制电机HAS10227

有个项目需要控制一台风机的转速,使用STM8S003F3P6 输出PWM控制,这里就详细记录一下调试记录。STM8S003F3P6 实现PWM控制电机HAS10227

2023-05-26 15:32:28 3350

原创 STM8、STM8S003F3P6 双串口通信(IO模拟串口)

这里为什么要写串口通信,因为实际项目上使用了串口,STM8S003F3P6的串口简单啊,不值得一提。本文写的串口确实简单,因为这里我想先从简单的写起来,慢慢的把难的引出来。这里呢,做个提纲说明,本文涉及的串口,是使用STM8S003F3P6片上的IO模拟串口。由于STM8S003F3P6资源有限,双机通信资源时常不够,下篇文章提出用IO模拟串口的方式进行数据收发。IO模拟串口还是有一定的难度的,调试起来非常消耗时间,我记得这里我调试了一个多星期。

2023-05-25 17:45:36 2170

原创 STM8、STM8S003F3P6 双机串口通信(片上串口)

这里为什么要写串口通信,因为实际项目上使用了串口,STM8S003F3P6的串口简单啊,不值得一提。本文写的串口确实简单,因为这里我想先从简单的写起来,慢慢的把难的引出来。这里呢,做个提纲说明,本文设计的串口,是使用STM8S003F3P6片上的串口。由于STM8S003F3P6资源有限,双机通信资源时常不够,后面提出用IO模拟串口的方式进行数据收发。

2023-05-25 17:01:44 2307

原创 STM8 模拟iic接口调试温湿度传感器SHT3x驱动

项目实际使用SHT3x进行温湿度测量,主控芯片采用STM8S003F3P6,并且使用模拟IIC接口的硬件连接。

2023-05-24 21:34:54 1141

原创 STM8使用pwm接口调试GDS06灰尘传感器

刚好有项目使用GDS06这款传感器,这里简单做个记录。GDS06接口如下,这里支持串口和PWM的输出到MCU,由于项目采用STM8S003F3P6,资源极其有限。

2023-05-24 08:26:58 594 1

原创 STM8 调试红外遥控器HS003B

项目中使用STM8S003F3P6,控制红外遥控器HS003B,调试过程也遇到了很多问题,这里做个记录。问题1:长按按键问题,如果长按遥控的某个按键,应该是一直能响应该按键值(需要对接收状态、接收信息清零操作)问题2:按键响应不是很灵敏,有时候,有些按键按下了,却没有识别到(需要对接收状态、接收信息清零操作。

2023-05-23 08:34:55 557

原创 STM8 使用74HC164外扩IO

在嵌入式开发过程中,经常使用时、甚至设计时候,考虑成本等因素,需要外扩IO。这里就是使用STM8S003F3P6,这个芯片比较常用的,这个芯片封装很小,只有20个管脚的MCU,实际产品上用的非常多。由于 74HC164 不带锁存器功能,也就是说在每移一位数据都会实时反应在输出口上,这样会导致输出口有不必要的电平变化,虽然非常短暂但是,但是有些情况下这是不允许发生的,如果对时序逻辑有要求的话。很多项目上都会使用,但是实际需求上,需要控制特别多灯,还有数码管,所以采用74hc164进行外扩IO的设计。

2023-05-22 19:36:29 700

原创 STM32实现基于RS485的简单的Modbus协议

这里用STM32实现,其实可以搬移到其他MCU,之前有项目使用STM32实现Modbus协议这个场景比较正常,很多时候都能碰到这里主要是Modbus和变频器通信最常见的是使用Modbus实现传感器数据的采集,我记得之前用过一些传感器都是Modbus协议这就需要MCU实现Modbus协议,不过实际使用的Modbus协议往往都是简化版本的可能只是几条Modbus协议格式的指令而已初学者,网上一搜Modubus协议,往往越看越糊涂。

2023-05-21 10:03:03 7626 2

原创 STM32 多路ADC同时扫描采样

在项目实际应用中,刚好有需求需要使用多路ADC同时采样,这里就选择STM32 ADC多路ADC同时采样,这里简单说明下配置过程,以及使用步骤。

2023-05-20 14:54:00 5663 3

原创 STM32独立按键扫描,支持同时按下、长按、快速键值

有个项目在实际应用中,采用8个独立按键,每个按键都赋予不同功能,实际使用过程中很多时候都是需要比较特殊的按键操作,例如:长按10s按键、长按5s按键,或者长按需要有快速按键值的反馈,这个情况就类似,我们需要快速增加一个设定值时,按住加号+按键不松手,这个按键值就一直增大。

2023-05-17 20:55:57 4662 3

原创 STM32 调试TM7711驱动原理图驱动代码

片内数字滤波器处理调制器的输出信号,通过通信口发命令可调节滤波器的截止点和输出更新速率,从而对数字滤波器的第一个陷波进行编程。项目主要是使用TM7711测量热电偶的温度,温度范围要求比较大-99-999读,这里就对ADC的精度要求比较高。STM32的ADC精度不够,才12bit,TM7711的精度可以,可以提供单通道 24bit 高精度 ADC。这里只是针对使用到的信息,做一些切割,如果想看详细的数据手册,还是下载一份TM7711的datasheet。TM7711 是全差分模拟输入,带有一个基准输入。

2023-05-16 10:33:52 3843 3

原创 stm32 MCU液晶TM1622 HT1622驱动调试

2处是MCU控制液晶的接口,其中SPI_RD用0欧姆的电阻连接,可以考虑不需要读取也液晶数据,可以不焊接该电阻,空余出来一个MCU的管脚。当然也和MCU的时钟有关,这里配置为72MHZ,如果需要移植该驱动,则需要根据自己的系统时钟修改如下函数的延时,当然也需要修改控制管脚。这里有点复杂,就是要支持两款液晶,一个大液晶一个小液晶,其中YJ1是焊接大液晶的接口,YJ2是焊接小液晶的接口。其中需要注意的是,PB6连接的tm1622的数据读取管脚,这个管脚实际上没有使用,配置成输入输出都无所谓。

2023-05-15 11:13:14 2740 1

原创 stm32 iic驱动ds1307实际使用驱动

DS1307串行实时时钟(RTC)是一款低功耗、二-十进制编码(BCD)的时钟/日历,外加56字节NV RAM。00h 地址的第 7 位为器件时钟允许位(CH), 此位为 1 则芯片未开始工作, 即时钟未走时, 所以在上电时单片机要先读出秒, 并判断位 7(CH) 是否为1,如为 1 要把该位清零写入秒寄存器(地址为 0) ,并把其他的时间单元设定为默认值。上次我记得写了一个使用开发板测试DS1307的测试例程,DS1307也是使用测试板,后面项目上具体使用了,又优化了驱动代码,这里做个简单的说明。

2023-05-13 15:25:22 1119

原创 stm32 74hc595外扩io 调试记录

有个项目对成本比较敏感,又想用ST的片子,输出管脚比较多,就考虑外扩IO,也有一些外扩IO的片子但是用下来成本就比较高了,还好这些都是一些输出IO,没有什么特别要求,例如输出PWM之类的。11脚:SCK(SHCP),移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。这样加快了对hc595的写入,如果移植改函数,需要注意一下时钟的主频,我这里使用的时钟主频是72M。10脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可。

2023-05-12 16:26:21 671

原创 stm32 iic调试ds1307 rtc时钟

是美国DALLAS公司推出的I2C总线接口实时时钟芯片,它可独立于 CPU工作,不受CPU主晶振及其电容的影响,且计时准确,月累积误差一般小于10秒。使用STM32调试ds1307,采用iic接口,由于有个项目需要使用外部RTC功能,所以需要选一个RTC模块,最后选择淘宝上搞个模块过来测试一下。原理图如下这个模块,从原理图上看,还有一个eeprom,这个也可以通过iic接口来访问,实际项目上暂时未使用,等有空可以调试看看。PA10/PA9/GND,使用杜邦线连接TTL转USB模块连接电脑,调试串口使用。

2023-05-11 16:41:29 1036

原创 STM32 i2c 驱动0.42寸OLED

时钟配置如下,使用内部HSI时钟,倍频到48Mhz,这里也很重要和时钟的延时有很多关系,如果延时函数配置不正确,会导致I2C时序不对,进而配置不对OLED,当然这里你也可以使用外部时钟。STM32 i2c 驱动0.42寸OLED,这是个项目中使用的方案,调试也是比较费劲,主要是取字模和代码的匹配,下个篇章中详解一下取字模的过程,在这个方案中的使用。有个项目需要使用一个最小的OLED进行显示,选来选去,找了一个0.42寸的超级小的OLED.这里简单记录一下实际项目中调试该OLED的过程。实际测试效果图如下,

2023-05-06 16:26:51 1210

原创 Zynq-7000、FMQL45T900的GPIO控制(七)---linux驱动层配置GPIO中断输入

这里一般需要根据自己的编译环境配置,source环境变量,我这里就省略了,makefile直接切换到内核目录,这里的内核目录需要替换成自己的目录。在Zynq-7000、FMQL45T900驱动层也时常会用到对GPIO的控制,这里就针对实际使用的情况进行说明,首先根据之前的帖子确实使用GPIO编号。在vivado中导出EMIO,使用EMIO5进行管脚测试,根据之前的帖子可以计算出来EMIO5对应的GPIO编号是431。使用的代码以及编译的.ko文件下载地址如下。驱动使用的主要GPIO控制函数如下。

2023-04-28 14:39:51 918

zynq使用intc实现大于16路以上uartlite,内涵vivado工程,设备树,详细步骤说明文档

项目实施过程中,采用zynq系列芯片,由于zynq自身PS侧仅仅提供两路串口,无法满足实际需求。这就需要从PL侧扩展出来多路串口出来。如果使用更多了大于16路axi_uartlite IP,PL-PS中断线不够使用如下图所示PL-PS中断线只有16个中断,如果uartlite太多了,就会导致中断不够用。该怎么办呢?本文提出使用intc实现大于16路以上uartlite来解决这个问题。 1.vivado工程 需要注意axi_intc IP核的配置,顶层设计上使用verilog代码,将17路uartlite收发管脚环路 2.设备树 提供自动生成设备树节点,最好根据需求,调整一下串口顺序 3.内核配置 需要对axi_intc 、uartlite进行配置项修改 4.上板调试过程,截图给出实际测试的效果,以及开机启动log,可以比对新设计。

2023-12-12

深入理解zynq uart16550的使用(含vivado工程、设备树、内核配置、步骤文档),PL实现9路uart16550

项目实施过程中,采用zynq系列芯片,由于zynq自身PS侧仅仅提供两路串口,无法满足实际需求。这就需要从PL侧扩展出来多路串口出来。网上也有一些针对的使用步骤,但是都不够友好,缺少很多细节上的步骤,很难调试成功。本文基于vivado工程PL侧实现9路uart16550,实现串口扩展。 1.Xilinx提供了两个常用的AXI接口的串口IP核,uart16550、uartlite,文章对比了两种IP核的优缺点,说明了使用场景。 2.vivado工程PL侧实现9路uart16550,顶层文件中,使用Verilog代码实现串口收发管脚短接 3.自动生成设备树 4.内核配置项的改动,不同版本内核配置项改动不一样,在步骤文档中都有截图说明 5.上板子调试过程,展示了/dev下设备节点,以及环路测试结果 6.提出一些调试过程的注意事项

2023-12-11

《一文精通zynq uartlite的使用》vivado工程,设备树文件,PL使用uartlite例化9路串口,详细步骤文档

vivado工程源文件、设备树源文件,PL使用uartlite例化9路串口,详细步骤文档,调试过程 项目实施过程中,采用zynq系列芯片,由于zynq自身PS侧仅仅提供两路串口,无法满足实际需求。这就需要从PL侧扩展出来多路串口出来。网上也有一些针对的使用步骤,但是都不够友好,缺少很多细节上的步骤,很难调试成功。本资源详解一下实际实现的步骤,供大家参考学习使用。 参考博客:https://blog.csdn.net/li171049/article/details/134871405

2023-12-08

NB6L295M STM32 GD32 IO模拟驱动设计,内含有软件工程代码,实际项目中使用,有参考原理图和实际使用说明

NB6L295M STM32 GD32 IO模拟驱动设计,内含有软件工程代码,实际项目中使用,有参考原理图和实际使用说明 参考博客: https://blog.csdn.net/li171049/article/details/133794250

2023-10-12

ad5665r STM32 GD32 IIC驱动设计,驱动程序在AD公司提供例程上修改得到,IO模拟的方式进行IIC通信

资源包含工程代码以及参考文档,参考博客: https://blog.csdn.net/li171049/article/details/133770831 目录 ad5665r STM32 GD32 IIC驱动设计 1 硬件设计 3 软件设计 5 MCU采用GD32,GD32类似STM32,针对ad566r的时序操作是相同的,IO模拟的方式进行IIC通信 软件工程还移植了FreeRTOS,实现一个闪灯任务,并打开了串口0,用于printf打印输出. 设置电压范围 uint32_t ad5665r_a_value = 0; uint32_t ad5665r_b_value = 0; uint32_t ad5665r_c_value = 0; uint32_t ad5665r_d_value = 0; 取值范围0~65535 根据选择DAC型号不一样,这里取值不一样,我这里是使用16bit 提示一下,该类芯片是一个系列有不同的DAC分辨率,看工程实际使用的型号Quad, 12-/14-/16-Bit nanoDACs

2023-10-11

MAX17058-MAX17059 STM32 iic 驱动设计内含有代码、详细设计过程文档,实际项目中使用代码,稳定可靠

详细可以参考博客 https://blog.csdn.net/li171049/article/details/133741997 目录 1. 简介 3 1.1. 典型用法 4 1.2. 寄存器一览表 4 1.3. 器件地址 4 1.4. IIC时序 5 2. 硬件设计 5 3. 软件设计 5 3.1 管脚定义 5 3.2 管脚初始化 6 4. 调试方法 6 5. 主函数 8 很多攻城狮使用IIC读取读取器件时候,非常喜欢使用IO模拟的方式。对初始化IIC使用管脚的初始化主要有两类 一类:将SDA、SCL初始化为GPIO_Mode_Out_OD(普通开漏输出),后面操作IIC管脚时序的时候,就不需要配置SDA的输入输出模式了。 一类:将SDA、SCL初始化为GPIO_Mode_Out_PP(通用推免输出),后面操作IIC管脚时序的时候,就需要配置SDA的输入输出模式。 这两种方式我都使用过,也都可以使用。这里采用第一类做法

2023-10-10

MATLAB编程plot函数用法举例

目录 MATLAB编程plot函数用法举例 1 语法 3 说明 3 示例 4 举例1 5 举例2 6 举例3 7 语法 plot(X,Y) plot(X,Y,LineSpec) plot(X1,Y1,...,Xn,Yn) plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn) plot(Y) plot(Y,LineSpec) plot(tbl,xvar,yvar) plot(tbl,yvar) plot(ax,___) plot(___,Name,Value) p = plot(___) 说明 向量和矩阵数据 示例 plot(X,Y) 创建 Y 中数据对 X 中对应值的二维线图。 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。 要在同一组坐标区上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。 plot(X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

2023-09-09

MATLAB主、子函数的使用举例内含有例程说明

MATLAB主、子函数的使用举例内含有例程说明 目录 MATLAB主、子函数的使用举例 1 简介 4 举例说明 4 测试结果 5 运行结果 5 截图显示 6 简介 再MATLAB编程过程中,使用主、子函数的方式完成代码编写。子函数和主函数在同一个M文件中。M文件对外提供主函数接口,这样处理起来就比较方便。 举例说明 function [avg, med] = newstats(u) % 主函数 % NEWSTATS Find mean and median with internal functions. n = length(u); avg = mean(u, n); med = median(u, n); function a = mean(v, n) % 子函数 % Calculate average. a = sum(v)/n; function m = median(v, n) % 子函数 % Calculate median. w = sort(v); if rem(n, 2) == 1 m = w

2023-09-09

MATLAB编程和C语言差异举例,举例说明,有示例代码参考

MATLAB编程和C语言差异举例,举例说明,有示例代码参考 目录 MATLAB编程和C语言差异举例 1 简介 3 举例说明 3 实现方法一: 3 实现方法二: 4 测试结果如下所示 4 简介 很多同学应该都是先学习的C语言,再学习的MATLAB,再MATLAB使用过程中,尤其是编程往往采用C语言的思路,会导致MATLAB程序效率低下。这里举例说明,二者编程过程中的细微差异,还是需要自己慢慢体会。 MATLAB主要是矩阵思想和C语言的编程逻辑还是又很大差异的。 举例说明 题目:找到A数组中大于0.6的元素,并替换成1 实现方法一: % 首先创建测试数据: A = randn(1000, 1000); B = A; %方法1 tic [X,Y] = find(A > 0.6); for i = 1:length(X) B(X(i),Y(i)) = 1; end toc 实现方法二: % 首先创建测试数据: B = A; %方法2 tic X = find(A > 0.6); B(X) = 1; toc 测试结果如下所示

2023-09-09

MATLAB保存Figure中画好的图像为jpg格式,提供例程代码

MATLAB保存Figure中画好的图像为jpg格式,提供例程代码 目录 MATLAB保存Figure中画好的图像为jpg格式 1 简介 3 手动存储 3 测试结果 4 编写代码实现自动存储 4 测试结果 5 简介 在MATLAB使用过程中,需要把Figure画好的图像保存为jpg格式,存储到本地硬盘上,如果你存储的图片不是太多,可以通过手动操作存储的方式。但是有时候,我们需要比较多的图片,并且很可能存储完图片后,就关闭了Figure图像。这里就介绍一种采用采用代码存储图像的方法。 手动存储 如下图所示,单击保存,可以选择保存的格式,在保存格式中选择jpg格式即可。 测试结果 编写代码实现自动存储 if ~exist('picture','dir') % 检查是否存在picture目录 mkdir('picture') % 如果不存在,则创建picture目录作为保存路径 end paths=[pwd,'\picture\']; % 完整保存路径 for k=1:3;

2023-09-09

MATLAB图像文件的操作基础函数使用

目录 MATLAB图像文件的操作基础函数使用 1 简介 3 查询图像文件的信息 3 图像文件的读写 4 图像文件的显示 4 图像的格式转换 5 简介 MATLAB中的图像处理工具箱体统了一套全方位的标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。这里仅仅对常用的基础函数做个使用介绍。 查询图像文件的信息 使用如下函数 imfinfo(filename,fmt) 函数imfinfo返回一个结构体的info,其中包括了图像文件的信息,filename是指定图像文件的字符串,fmt是指定图像文件格式的字符串。通过此函数获得的信息与图像文件格式的字符串。通过此函数获得的信息与图像文件的类型有关,但至少包含以下一些内容。 imfinfo >> info = imfinfo('测试图片.jpg')

2023-09-08

MATLAB基础 M文件编写,脚本式M文件 函数式M文件

目录 MATLAB基础 M文件编写 1 简介 3 脚本式M文件 3 函数式M文件 5   简介 所谓M文件就是将处理问题的各种命令融合到一个文件中,该文件以.m为扩展名。然后,由MATLAB系统编译M文件,得出相应的运行结果。M文件具有相当大的可开发性和扩展性。M文件有脚本文件和函数文件两种。脚本文件不需要输入参数,也不输出参数,而会按照文件中指定的顺序执行命令序列。而函数文件则接受其他数据为输入参数,并且可以返回结果。 脚本式M文件 避免用户输入较多命令,避免重复输入命令,打开该类M文件,单击运行或者按下F5按键,即可运行该类文件 函数式M文件 函数式M文件比脚本式M文件相对复杂一些,脚本式M文件不需要输入变量,也不一定返回结果,而函数式M文件一般要输入变量,并且有返回结果。举例使用M文件计算向量的平均值。 输入如下代码,保存average.m

2023-09-07

MATLAB创建avi文件,例程代码

简介 MATLAB可以对音频和视频文件进行处理,这里简单说明一下MATLAB创建avi文件的用法。 常用函数 aviinfo 测试用用例,如下所示 用于avi格式的音频视频文件,返回一个对该文件的描述,只能用于avi格式的音频视频文件。 仔细看了一下帮助,这个函数在后续的版本,被VideoReader替代了。 Note: aviinfo will be removed in a future release. Use VideoReader instead. aviread 由文件导入avi数据为MATLAB电影。 在MATLAB中,可以将一连串图像另存为一段MATLAB视频,然后通过调用movie函数观看。和其他MATLAB Workspace中的变量一样,可以将MATLAB视频另存为mat文件,但是这个mat文件只有MATLAB词可以打开,播放的了。 如果将视频帧导出为AVI格式,在其他视频播放器也可以播放该文件。AVI文件格式在windows或UNIX操作系统下均可播放,需要指出的是同通过调用movie2avi函数,可以将MATLAB电源转化为avi格式。 同上,这个函数在更

2023-09-07

mat文件的读写. mat 文件 MATLAB读写操作

mat文件的读写. mat 文件 MATLAB读写操作 MAT文件是MATLAB格式的双精度二进制数据文件,由MATLAB软件创建,可以使用MATLAB软件再其他计算机上以其他浮点格式读取,同时也可以使用其他软件通过MATLAB的应用程序接口来进行读写操作。如果只是再MATLAB环境中处理数据,使用MAT文件格式是最方便的,这样会避免文件格式转换的带来的复杂操作。 MAT文件的写入 示例代码如下 这里简单保存数组A到A.mat文件中 >> A = [1 2 3 4 5; 6 7 8 9 0]; >> save A.mat A >> load('A.mat') 其中1处为显示代码,2处为执行保存指令后形成的文件,3为A.mat文件内容

2023-09-07

MATLAB蒙特卡洛方法使用原理简单分析含代码,运行结果

目录 MATLAB蒙特卡洛方法使用原理简单分析 1 简介 3 基本思想 3 工作过程 3 编程示例 3 运行示例 4 简介 蒙特卡洛也成为统计模拟方法,提出以概率统计理论为指导的一类非常重要的数值计算方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙特卡罗,该城市以赌博业闻名,而蒙特卡罗正是以概率为基础的方法。 基本思想 通过实验的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,将其作为问题的解。 工作过程 阐述概率分布的随机变量 使用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解 编程示例 求单位圆的面积,即圆周率 clear A=rand(1000,1000); B=rand(1000,1000); C=sqrt(A.^2+B.^2); D=logical(C<=1); F=sum(D(:)); mypi=F/numel(A)*4 % 计算pi,其中numel(A)为A中的元素个数 运行示例

2023-09-06

MATLAB读写Text文件基础示例

MATLAB读写Text文件基础示例 MATLAB读写Text文件 1 简介 4 Text读取 4 Text写入 5 简介 为了便于和外部程序进行交换,以及查看文件中的数据,也常常采用文本数据格式与外界交换数据。在文本格式中,数据采用ASCII码格式,可以使用字母和数字字符。可以在文本编辑器中查看和编辑ASCII文本数据。MATLAB提供了导入函数导入Text文件。 Text读取 测试用用例,如下所示 1 2 3 4 5 6 7 8 9 10 调用函数 load testdata1.txt 使用测试结果如下图所示 Text写入 要将一个数组导出一个有分隔符的ASCII码文件中,可以调用save函数。在调用时,要指定-ASCII参数,也可以调用dlmwrite函数。save函数用起来比较方便,而dlmwrite函数有更大的灵活性。它允许用户把任何一个字符指定为分隔符,也可以通过指定一个值域来导出一个数组的子数组。 A = [1 2 3 4 5; 6 7 8 9 10] save A.txt A -ASCII

2023-09-06

MATLAB中isequal函数转化为C语言,有项目算法使用matlab中isequal函数进行运算,这里需要将转化为C语言

MATLAB中isequal函数转化为C语言,有项目算法使用matlab中isequal函数进行运算,这里需要将转化为C语言 有项目算法使用matlab中isequal函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。 MATLAB中isequal简单介绍 语法 tf = isequal(A,B) tf = isequal(A1,A2,...,An) 说明 如果 A 和 B 等效,则 tf = isequal(A,B) 返回逻辑值 1 (true);否则,返回逻辑值 0 (false)。有关每种数据类型的等效性的定义,请参阅输入参数部分。NaN(非数字)、NaT(非时间)、未定义的分类元素和 <missing> 值被视为与其他元素不相等,彼此之间也不相等。 要将 NaN、NaT、<undefined> 和 <missing> 值视为与其他此类值相等,请使用 isequaln。 示例 如果所有输入是等效的,则 tf = isequal(A1,A2,...,An) 返回逻辑值 1 (true)。 比较两个数值矩阵

2023-08-31

MATLAB中mod函数转化为C语言,有项目算法使用matlab中mod函数进行运算,这里需要将转化为C语言,从而模拟算法运行

MATLAB中mod函数转化为C语言 目录 MATLAB中mod函数转化为C语言 1 背景 3 MATLAB中mod简单介绍 3 语法 3 说明 3 示例 3 C语言实现 5 背景 有项目算法使用matlab中mod函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。 MATLAB中mod简单介绍 语法 b = mod(a,m) 说明 b = mod(a,m) 返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数。此函数通常称为取模运算,表达式为 b = a - m.*floor(a./m)。mod 函数遵从 mod(a,0) 返回 a 的约定。 示例 标量被除后的余数 计算 23 对 5 取模。 b = mod(23,5) b = 3 向量被除后的余数 a = 1:5; m = 3; b = mod(a,m) b = 1×5 1 2 0 1 2 >> mod(1,2) ans = 1 >> mod(2,2) ans = 0 >> mod(3

2023-08-31

MATLAB中circshift函数转化为C语言

MATLAB中circshift函数转化为C语言 目录 MATLAB中circshift函数转化为C语言 1 背景 3 MATLAB中circshift简单介绍 3 C语言实现 4 背景 有项目算法使用matlab中circshift函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。 MATLAB中circshift简单介绍 circshift是循环移位函数。可以使用于数组和矩阵元素的循环移位。 当A是数组 B=circshift(A,p);如果p是正数则实现A从左到右的循环移位。如果p是负数则实现A从右到左的循环移位。 当A是矩阵 B=circshift(A,[p,0]);如果p是正数则实现A以行为单位,从上到下的循环移位。如果p是负数则实现从下到上的循环移位。 B=circshift(A,[0,p]);如果p是正数则实现A以列为单位,从左到右的循环移位。如果p是负数则实现从右到左的循环移位。 实际maltab中使用如下代码所示,其中z为96000x1列向量 x4 = circshift(z,[1,0])

2023-08-31

MATLAB基础-符号变量的使用示例,提供三个例程代码,并给出示例图

MATLAB基础-符号变量的使用示例,提供三个例程代码,并给出示例图 在 MATLAB 中,syms 函数用于定义符号变量。符号变量是一种特殊类型的变量,用于表示数学表达式中的符号和变量,而不是数值。 在定义符号变量之后,我们可以使用 MATLAB 的符号计算工具箱进行符号计算,例如求解方程、求导、积分、求极限、求解线性代数问题等。 需要注意的是,符号计算是一种复杂的运算,通常比数值计算更慢,并且可能会导致精度损失。因此,在使用符号计算时应该注意控制计算的复杂度和精度,以避免出现不必要的错误。 目录 MATLAB基础-符号变量的使用示例 1 举例1: 4 代码 4 举例2 5 代码 5 结果 5 举例3 6 代码 6 结果 7 举例2 代码 例程代码如下 syms x; y=x^(-2)-x^(-4); ezplot(y) 结果 运算结果如下图所示: 举例3 代码 例程如下 syms a; b=a+a^(-2); ezplot(b) 结果 运算结果如下图所示:

2023-08-29

使用蒙特卡洛算法解算炼油厂的选址MATLAB程序,提供试题照片,以及MATLAB代码

参考博客:https://blog.csdn.net/li171049/article/details/132569270 使用蒙特卡洛算法解算炼油厂的选址MATLAB程序,提供试题照片,以及MATLAB代码 %蒙特卡罗算法 MIN=inf; %取十万组随机数 LIMIT=10000000; while LIMIT>0 %生成指定范围内的随机数 x(1)=82*rand; x(2)=82*rand; x(3)=82*rand; x(4)=82*rand; %过滤不符合条件的随机数 while x(1)>82 | x(1)<0 %| x(2)>81 | x(2)<0 | x %再次生成随机数 x(1)=82*rand; % x(2)=(1-0.9397)*rand+0.9397; end;

2023-08-29

数学建模大赛使用MATLAB解算炼油厂的选址,记得有一年的数据建模大赛试题以及MATLAB程序

数学建模大赛使用MATLAB解算炼油厂的选址,记得有一年的数据建模大赛试题以及MATLAB程序 关键词: matlab 蒙特卡洛算法 最优解 问题分析 问题一: 本问的炼油厂选址是九口油井的任一处,我们可以把九口油井依次作为炼油厂,然后分别计算其费用。 问题二: 本问的炼油厂选址范围应在0<横坐标x<100、0<纵坐标y<100,的矩形区域内。可以把问题转化为:在该矩形区域内找一点使其满足总费用最少。 问题三: 本问的两个炼油厂的选址纵横坐标都应在[0,82]的范围内。问即可转化成在该矩形区域内找两点,使其总费用最低。 模型假设 1. 总费用与距离成正比,设比例系数为1; 2. 总费用与油量成正比,设比例系数为1; 3. 其他因素不影响总费用; 4. 一口油井的原油智能运往一个炼油厂; 模型建立与求解 第一问模型: 设选1号油井为炼油厂产生的费用为feiyoug1; 选1号油井为炼油厂产生的费用为feiyoug1; 选2号油井为炼油厂产生的费用为feiyoug2; 选3号油井为炼油厂产生的费用为feiyoug3; 选4号油井为炼油厂产生的费用为feiyoug4;

2023-08-29

MATLAB矩阵基础操作,提供一些基础操作示例

MATLAB矩阵基础操作,提供一些基础操作示例 MATLAB矩阵基础操作 1 矩阵的创建与合并 3 矩阵的寻访与赋值 3 常用数组运算函数 4 查询矩阵信息 4 矩阵的重构 4 矩阵的创建与合并 通过初值,步长,终值的方式 A=2:2:20 B=1:10 创建3行3列的矩阵 A=[1 2 3;4 5 6;7 8 9] 创建所有元素为1的4x4矩阵 A=ones(4) 创建单位矩阵5x5矩阵 A=eyes(5) 矩阵的合并 将矩阵A和矩阵B在水平方向上合并到一起 C=[A B] 将矩阵A和矩阵B在竖直方向上合并到一起 C=[A;B] 矩阵的寻访与赋值 A=a(2,2) 常用数组运算函数 abs(x) angle(x) sqrt(x) real(x) imag(x) conj(x) round(x) fix(x) floor(x) ceil(x)

2023-08-24

C语言实现基于数组的环形缓冲队列 ,通过图文简单介绍了缓存的写入和读出,并给出示例代码

C语言实现基于数组的环形缓冲队列 ,通过图文简单介绍了缓存的写入和读出,并给出示例代码 在C语言编程场景中,常常需要对一段不定长数据进行缓存。这里提出一种基于数组的环形缓冲队列,解决上述场景的问题。 原理 如下图所示,首先定义数据长度为buf[8],初始化指针为in/out 其中in为缓冲数据的输入指针 out为缓冲数据的输出指针

2023-08-24

PyQt5基础-创建对话框,简述了PyQt5使用过程,使用QtWidgets、QPushButton类说明

PyQt5基础-创建对话框,简述了PyQt5使用过程,使用QtWidgets、QPushButton类说明 目录 PyQt5基础-创建对话框 1 软件安装 2 Python安装 2 PyQt5的安装 2 设置环境变量 2 PyQt5创建按键 3 PyQt5创建widget 4 PyQt5的安装 这里你可以把PyQt5理解为一个库,安装PyQt5就是安装库 安装指令如下 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools -i https://pypi.douban.com/simple 设置环境变量 如下图所示,针对环境变量的设置如下, C:\Users\xxx\AppData\Local\Programs\Python\Python36\Lib\site-packages\pyqt5-tools C:\Users\xxx\AppData\Local\Programs\Python\Python36\Scripts

2023-08-21

MATLAB读写excel文件历程含,内含有测试代码

MATLAB读写excel文件历程含,内含有测试代码:参考博客 https://blog.csdn.net/li171049/article/details/132379982

2023-08-19

MATLAB打开excel读取写入操作例程 提供演示代码,测试文件,供初学者参考

MATLAB打开excel读取写入操作例程 提供演示代码,测试文件,供初学者参考 1. 打开文件 使用uigetfile函数过滤非xlsx文件,找到需要读取的文件,首先判断文件是否存在,如果文件不存在,程序直接返回,存在记录下文件的路径 [file,path] = uigetfile('*.xlsx'); if isequal(file,0) disp('User selected Cancel'); return; else disp(['User selected ', fullfile(path,file)]); end f_path = fullfile(path,file); 2. 读取excel [DATA] = xlsread(f_path); 3. 写入excel xlswrite(f_path,DATA,'sheet2','A2:D1153'); 4. 函数介绍 5. 完整代码 6. 测试结果 7. 提供测试文件

2023-08-19

python 多线程的同步机制 以python2例程的方式讲解了python 多线程的同步 常用的方法,主要是锁、条件同步、队列

python 多线程的同步机制 以python2例程的方式讲解了python 多线程的同步 常用的方法,主要是锁、条件同步、队列 多线程的同步  多线程情况下最常见的问题之一:数据共享;  当多个线程都要去修改某一个共享数据的时候,需要对数据访问进行同步;  锁:threading.Rlock  条件同步:threading.Condition  队列:Queue  首先一个线程成功获得一个条件变量后,调用此条件变量的wait()方法会导致这个线程释放这个锁,并进入“blocked”状态,直到另一个线程调用同一个条件变量的notify()方法来唤醒那个进入“blocked”状态的线程。如果调用这个条件变量的notifyAll()方法的话就会唤醒所有的在等待的线程。  如果程序或者线程永远处于“blocked”状态的话,就会发生死锁;  所以如果使用了锁、条件变量等同步机制的话,一定要注意仔细检查,防止死锁情况的发生。  保证每一个wait()方法调用都有一个相对应的notify()调用,当然也可以调用notifyAll()方法以

2023-08-18

python 队列Queue的使用 python2例程展示了队列Queue的使用过程,供学习参考使用

python 队列的使用 python2例程展示了队列的使用过程,供学习参考使用 队列:Queue  queue_test.py  put()函数主动改变队列  get()函数阻塞,代替查询  Produser & Consumer  定期生产,一有货就被抢购 from multiprocessing import Process, Pipe def f(conn): conn.send([42, None, 'hello']) #print conn.recv() conn.close() if __name__ == '__main__': parent_conn, child_conn = Pipe() p = Process(target=f, args=(child_conn,)) p.start() print parent_conn.recv() # prints "[42, None, 'hello']" #parent_conn.send("Greeting From MaMa")

2023-08-18

python 条件同步的使用 条件同步:threading.Condition 多线程同步,python2例程

python 条件同步的使用 条件同步:threading.Condition 多线程同步,python2例程 多线程的同步  多线程情况下最常见的问题之一:数据共享;  当多个线程都要去修改某一个共享数据的时候,需要对数据访问进行同步;  条件同步:threading.Condition 部分代码 import threading class Producer(threading.Thread): def __init__(self, t_name): threading.Thread.__init__(self, name=t_name) def run(self): print 'start producer' global x while True: con.acquire() if x > 0: print 'producer wait' con.

2023-08-18

python 锁的使用 python锁的使用例程python2可以直接运行,提供示例程序,供学习参考

python 锁的使用 python锁的使用例程python2可以直接运行,提供示例程序,供学习参考 多线程情况下最常见的问题之一:数据共享; 当多个线程都要去修改某一个共享数据的时候,需要对数据访问进行同步; 锁:threading.Rlock from multiprocessing import Process, Lock import time,random def f(l, i): #l.acquire() time.sleep(random.random()) print 'hello world', i #l.release() if __name__ == '__main__': lock = Lock() for num in range(10): Process(target=f, args=(lock, num)).start()

2023-08-18

python 线程的使用 python线程基础知识,提供python2示例代码,供参考学习

python 线程的使用 python线程基础知识,提供python2示例代码,供参考学习 python 提供thread和theading两个线程模块,thread较底层,threading较方便,大多数情况下使用theading就足够了; thread_test.py start(), name, join()  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位;  线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位;  线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源;

2023-08-18

python 进程的使用 python基础 提供了python进程的使用示例代码,python2可以直接运行

python 进程的使用 python基础 提供了python进程的使用示例代码,python2可以直接运行  multiprocessing:提供跨平台的多进程支持  process_test.py  os.getpid()  使用top和kill命令  https://docs.python.org/2.7/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing 1) 一个程序至少有一个进程,一个进程至少有一个线程; 2) 线程的划分尺度小于进程,多线程程序的并发性高; 3) 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率; 4) 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但线程不能够独立执行,必须依存在应用程序中,由应用程序提供线程控制; 5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。

2023-08-18

python 模块的使用 python基础训练题,模块的使用规则例程,提供python2代码例程

python基础训练题 模块 模块的概念  通常模块为一个文件(通常以.py为扩展名)  包含函数和变量  模块可以被其他模块导入——import  从而利用其中定义的函数和变量  这也是使用Python标准库的方法  运行module_sys.py  help(sys) module_sys.py运行解析  import语句 告诉Python将使用这个模块;  sys模块包含Python解释器和环境有关的函数;  Python执行import sys语句时,在sys.path变量中所列目录中寻找sys.py模块;  如果找到了这个文件,这个模块的主块中的语句将被运行;  初始化过程仅在第一次输入模块的时候进行;  sys模块中的argv变量通过sys.argv获得;  不会与程序中定义的argv变量冲突;  sys.argv变量是一个字符串的列表;  包含了命令行传递的程序参数;  执行  python module_sys.py we are arguments  后面跟着的内容被作为参数传递给程序;  Python将参数存储在sy

2023-08-17

python sio测试的使用 python2 sio测试例程,提供python2测试代码,io.loadmat读取.mat文件

python sio测试的使用 python2 sio测试例程,提供python2测试代码,io.loadmat读取.mat文件 读取方法很简单,只需要使用scipy.io库即可,Python代码入下: import scipy.io as sio mat_contents = sio.loadmat('test.mat') print type(mat_contents) print sio.whosmat('test.mat') x = mat_contents['a'] y = mat_contents['b'] print x print y

2023-08-17

python linalg测试的使用 python测试使用例程提供linalg使用的代码,供参考

python linalg测试的使用 python测试使用例程提供linalg使用的代码,供参考 参考代码如下 import numpy as np from scipy import linalg ##A = np.array([[1,2],[3,4]]) ##B = linalg.inv(A) ##print B ##print np.dot(A,B) A = np.array([[1, 2], [3, 4]]) b = np.array([[5], [6]]) x = np.linalg.solve(A, b) #print x #print np.dot(A,x) D = linalg.det(A) #print D la, v = linalg.eig(A) print la print v A = np.array([[1,2,3],[4,5,6]]) U,s,Vh = linalg.svd(A) print U print s print Vh

2023-08-17

python interpolate测试的使用 文中简单介绍了interpolate,并给出其python2例程代码,供参考使用

python interpolate测试的使用 文中简单介绍了interpolate,并给出其python2例程代码,供参考使用 代码示例如下 import numpy as np from scipy.interpolate import interp1d import matplotlib.pyplot as plt x = np.linspace(0, 10, num=11, endpoint=True) y = np.cos(-x**2/9.0) f = interp1d(x, y) f2 = interp1d(x, y, kind='cubic') xnew = np.linspace(0, 10, num=41, endpoint=True) plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--') plt.legend(['data', 'linear', 'cubic'], loc='best') plt.show()

2023-08-17

python signal测试的使用 python信号处理函数的使用测试 from scipy import signal

python signal测试的使用 python信号处理函数的使用测试 from scipy import signal 提供python2示例代码 import numpy as np from scipy import signal import matplotlib.pyplot as plt b1 = signal.firwin(40,0.5) b2 = signal.firwin(41,[0.3,0.8]) w1,h1 = signal.freqz(b1) w2,h2 = signal.freqz(b2) plt.title('Digital filter frequency response') plt.plot(w1,20*np.log10(np.abs(h1)),'b') plt.plot(w2,20*np.log10(np.abs(h2)),'r') plt.ylabel('Amplitude Response (dB)') plt.xlabel('Frequency (rad/sample)') plt.grid() plt.show() fs = 10e

2023-08-17

python fft测试的使用 简述了python中fft的使用,并给出了python2测试代码示例

python fft测试的使用 简述了python中fft的使用,并给出了python2测试代码示例 部分代码如下 import numpy as np from scipy.fftpack import fft, ifft import matplotlib.pyplot as plt # Number of sample points N = 600 # sample spacing T = 1.0 / 800.0 x = np.linspace(0.0, N*T, N) y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) yf = fft(y) xf = np.linspace(0.0, 1.0/(2.0*T), N/2) plt.plot(xf, 2.0/N * np.abs(yf[0:N/2])) plt.grid() plt.show()

2023-08-17

python numpy库的使用 python基础,演示了numpy库的使用,提供python2例程代码,适合初学者

python numpy库的使用 python基础,演示了numpy库的使用,提供python2例程代码,适合初学者 Numpy Numpy是Python的一个科学计算的库 高效的向量和矩阵计算 很多函数都是C语言实现的 import numpy as np 用法:np.### http://www.numpy.org/ NumPy Tutorial https://docs.scipy.org/doc/numpy-dev/user/quickstart.html Basics Array Creation Basic Operations Universal Functions (argmax/argmin/argsort) Indexing, Slicing and Iterating Shape Manipulation Copies and Views

2023-08-17

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

TA关注的人

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