为什么在svpwm调制中需要电流环控制?
一、为什么在svpwm调制中需要电流环控制?
因为在考虑功率半导体损耗的时候,如果只考虑硬件,那纯粹是耍流氓,毕竟,硬件是基础,真正厉害的高效率,还得靠软件助推一把,那SVPWM便是电机控制软件的根基。
永磁同步电机的旋转磁场是靠定子电流产生的,实际控制电机旋转便是控制这个旋转磁场。
二、计算机库中包含哪几个?
计算机库通常指的是在计算机编程中用于提供特定功能或数据结构的软件模块。计算机库通常分为以下几个类型:标准库:这些是操作系统或编程语言本身提供的库,如C语言的标准库,提供了输入输出、内存管理、字符串处理等功能。第三方库:这些是由第三方开发者创建的库,用于提供特定功能或解决特定问题。例如,OpenCV是一个用于计算机视觉的库,NumPy和Pandas是用于数据科学的库。自定义库:这些是由开发者自己创建的库,用于组织和管理代码,提高代码的可重用性和可维护性。以上只是大致分类,实际上计算机库的类型和数量非常多,具体取决于编程语言、应用领域和个人需求。
三、各位大大:SVPWM与SPWM中相电压最大利用率是怎么算的啊? 为什么在SVPWM中要比SPWM中大?
SVPWM线电压的峰值为Vdc,相电压峰值自然就是Vdc/sqrt(3);
SPWM不是很熟,但相电压峰值应该是Vdc/2
四、STM32中DMA通道?
问题基本出在合并代码上了。这2个功能在STM32上并不冲突。
合并代码出现问题是很常见的,特别是合并2个别人写的程序,而自己对DMA,DAC和UART,LCD代码并不熟悉的情况下,很容易复制少代码,兼容没做好等等,导致一个功能无法使用。
合并一个工程,其实就是复制拷贝它的
驱动代码
和应用程序
到另一个工程中。以题主的LCD工程为例,设置串口波特率,收发模式,停止位等等是串口的驱动,STM32通过串口发送数据去配置LCD各种工作模式,如对比度,亮度等等是LCD的驱动程序。驱动看起来就是在完成一些初始化的工作。所以,我们要知道,哪一部分代码是负责串口初化的,当你找到这部分代码以后,就可以把他拷贝到工程中,串口的初始化还包括使能时钟(port口时钟和uart外设时钟),配置IO口为复用模式,甚至还可能有中断等等,可以按以下思路来合并一个工程(以LCD合并到ADC为例):
串口驱动的合并:当我们把串口的驱动合并过去以后,我们就可以使用简单的发送函数来看看,串口是否正常工作,而这些函数其实就是串口的应用程序了,如果我们能正常收发数据,那么我们就继续合并LCD驱动的代码。
LCD驱动的合并:其实LCD的初始化就是通过与串口数据交互来通讯的,把这部分移植过去以后,就调用LCD显示函数,来看看能不能在LCD上画一个字符等,来确认驱动程序是否成功,如果不是,就需要查看和LCD和串口的通讯是否正常,这个可以通过和原工程进行对比。
这里我们就会遇到一个问题,我怎么知道要拷贝哪些代码?那些就是驱动,那些又是应用程序?这就要求我们外设有一定的了解,当然有些程序把驱动单独写一个文件,这样直接的整个文件拷贝过去,通常就完成驱动的合并,但是最好还是需要掌握其配置流程,否则调试就无从起手,特别STM32很多程序都是“野程序”,甚至作者提供的代码都存在一定的设计缺陷。
还有另一个问题,我们怎么知道,串口和IIC通讯的情况,这就需要一个示波器,但是更好的可能是逻辑分析仪,逻辑分析仪可以捕获IO口上的电平,并解析数据,这样你就可以知道这个IO口上通讯的情况了。
所以合并的思路,就是要了解工程的结构,然后从最低层开始合并,然后单独调试,确保每一步都是正常工作的。
我并不太确定,其他开发者的思路,只是提供一些个人在工作中常用的调试手段,我想,它也是比较合适新手的。
五、stm32电机接不上电?
接不上电是由于电机的进线端出现开路。
六、STM32中IO口复位或者上电时是什么状态?
在没有对IO口初始化的时候是高阻状态,STM32 的IO 用之前都要初始化IO时钟以及速率,上拉还是下拉等参数,所以程序中如果没有对其初始化,将处于高阻状态,相当于内部串有很大的电阻,既不是高电平,也不是低电平
七、stm32中如何定义t?
__int64 有的C语言编译器支持longlong型,遗憾的是keil不支持。。。 stm32库里面有定义 typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; 所以你要定义64位变量直接用int64_t或者uint64_t定义就行,一个是有符号,一个是无符号
八、stm32中SCLK是什么?
stm32集成有SPI串行数据接口。
SPI接口由4根线组成:1.SCLK,SPI的时钟接口,为通讯提供时钟信号;2.MOSI,主设备输出接口(从设备输入接口);3.MISO,主设备输入接口(从设备输出接口);4.CS(SS),片选信号接口,用于选中该设备,低电平有效。
九、stm32中怎么用sprintf?
sprintf
sprintf指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,...]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。
sprintf函数语法
函数声明
int sprintf(char *string, char *format [,argument,...]);
参数列表
string-- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
format-- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是%[flags][width][.precision][length]specifier
[argument]...:根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
功能
把格式化的数据写入某个字符串缓冲区。
返回值
如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。
sprintf 返回以format为格式argument为内容组成的结果被写入string的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的string后,函数sprintf 返回5。
十、STM32中断怎么理解?
以STM32F103VB系列为例,100pin, 一般我们通常使用的IO对应外部中断线如下: PA0,PB0,PC0,PD0,PE0 对应的是EXTI0中断线; 以此类推 到PA15,PB15,PC15,PD15,PE15对应EXTI5中断线。STM32里面EXTI0 – EXTI4这5个外部中断有着自己的单独的中断就表示哪个中断被触发。
你打开stm32的启动文件,例如startup_stm32f10x_hd.s 里面有很多中断跳转的入口。用白话说就是固件库帮你写好了发生什么中断时跳转到哪里,这些名字是一个函数名,你要把这些函数写出来,然后中断来了stm32就跳到这样函数名的函数里面来。
推荐阅读