STM32杂乱笔记

这篇具有很好参考价值的文章主要介绍了STM32杂乱笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题都比较的基础和低级,仅记录一下。

问题一:stm32的某个.c文件中无法调用另一个.c中的指定变量,怎么解决?

以g_ADC_sample_vaule.Iu 为例,它是 drive_adc_info.c 里面的变量,想要在system_time_sequence.c里面调用,必须要满足条件:

(1)system_time_sequence.c 里面扩了drive_adc_info.h

(2)drive_adc_info.h 里面 加入extern ADC_Value_Str   g_ADC_sample_vaule;

问题二:怎么嵌套的定义结构体?

以电机控制中的电流为例,电流作为一个比较大的范围,包括有ADC采样所得的UVW相电流,也有坐标变换之后的Ialpha Ibeta 还有 Id Iq,可以把IUVW、Ialphabeta、Idq作为小结构体,然后把电流作为一个大的结构体。首先可以先定义IUVW、Ialphabeta、Idq的小结构体;

typedef struct UWM_Var_Str_Def{
    float   U;
    float   V;
    float   W;
}UWM_Var_Str;

typedef struct AlphaBeta_Var_Str_Def{
    float   alpha;
    float   beta;
}AlphaBeta_Var_Str;

typedef struct DQ_Var_Str_Def{
    float   d;
    float   q;
}DQ_Var_Str;

typedef struct AmpTheta_Var_Str_Def{
    float   amp;
    float   theta;
}AmpTheta_Var_Str;

 然后再定义电流的结构体,另外像电流在全局都会用的信息,最好是全局定义。

typedef struct Current_Value_Str_Def
{
    UWM_Var_Str         Iuvw;
    AlphaBeta_Var_Str   IAlphaBeta;
    DQ_Var_Str          Idq;
    AmpTheta_Var_Str    IAmpTheta;  
}Current_Value_Str;

问题三:在子函数的定义中是指针定义时,如何调用该子函数?

也必须是用指针调用,例如函数UVW_To_AlphBeta_Axes中形参都是结构体指针,那么在中断中调用的时候也应与此对应,UVW_To_AlphBeta_Axes函数中的结构体指针都是直接指向地址的,因此调用的时候要给到子函数的,不再是函数变量而是具体的地址。

void UVW_To_AlphBeta_Axes(UWM_Var_Str *pUVW, AlphaBeta_Var_Str *pAlphBeta)
{
    pAlphBeta->alpha = 0.4714045207910f * (pUVW->U - (0.5f * (pUVW->V + pUVW->W)));
    pAlphBeta->beta  = 0.4082482904638f * (pUVW->V - pUVW->W);
}

其调用如下所示,通过取地址符&对g_Current.Iuvw进行取地址,然后应用g_Current.Iuvw结构体中的U、V、W;值得注意的是g_Current.Iuvw的定义一定要与UVW_To_AlphBeta_Axes调用的语句对应,即函数中用的是pUVW->U,那么g_Current.Iuvw结构体中就必须也是g_Current.Iuvw.U,名称必须完全一致。

UVW_To_AlphBeta_Axes(&g_Current.Iuvw,&g_Current.IAlphaBeta);

问题四:@brief 和 @retval 有什么作用?

具体作用就是在编译器中,假如鼠标悬浮的时候,能够直接显示函数定义和返回值具体定义

  * @brief  Udc采样值
  * @retval 
  */
void Drive_Udc_Info_Init(void)
{
    g_Udc_info.Udc_adj_coff = 1.0f;
}

STM32杂乱笔记

 问题五:采样系数怎么算?

采样电阻的阻值是0.01R,10A电流产生的压降是10*0.01 = 0.1V

STM32杂乱笔记

放大后输出电压 =

STM32杂乱笔记

STM32杂乱笔记

此时我们的  R1 = 2k   R2 = 33k  R3=2k R4 = 33k

Vout = [(33+2)/2]*[(e1*33+1.65*2)/(33+2)]=16.5e1 + 1.65

而 采样电阻等于0.01欧,则 Vout = 0.165Ia +1.65

当Ia = 10A时,Vout = 3.3

当Ia = -10A时,Vout = 0文章来源地址https://www.toymoban.com/news/detail-474003.html

到了这里,关于STM32杂乱笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32调试】寄存器调试不良问题记录持续版

    记录一些stm32调试过程中:不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以及外设等寄存器的调试,不包含业务方面。 使用低功耗功能前是否需要打开PWR时钟? 是需要先打开PWR时钟的,否则无法唤醒。 睡眠模式、停机模

    2024年01月18日
    浏览(60)
  • Keil环境下CANopenNode移植到STM32问题记录(一)---printf重定向问题

    在直接将CANopenSTM32的示例工程直接移植到Keil环境下。 如果移植工程未实现printf函数重定向,则要注释掉log_printf下面的printf函数,使日志打印失效 在未在选项中勾选使用微库的时候,程序会卡死。调试会发现是卡死在了BKAP 0xAB处,网上搜索会有很多说明,是因为使用了print

    2024年02月13日
    浏览(48)
  • 【STM32笔记】STM32的串口数据收发基础(四)(USART DMA模式)

         在STM32中编写串口通信数据收发有三种方式: 轮询模式 (阻塞方式), 中断模式 (非阻塞方式)以及 DMA模式 。      打开STM32CubeMX,前部分配置流程如串口数据收发基础(三)节里一样。配置好USART1的基本参数,开启定时器中断后,接下来就要开启USART1的DMA。

    2024年02月03日
    浏览(41)
  • 【STM32笔记】STM32的定时器开发基础(二)(基于STM32CubeMX实现定时器中断)

      传统STM32外部中断 的设计步骤:  (1)将GPIO初始化为输入端口。  (2)配置相关I/O引脚与中断线的映射关系。  (3)设置该I/O引脚对印的中断触发条件。  (4)配置NVIC,并使能中断。  (5)编写中断服务函数。   基于STM32CubeMX的外部中断 设计步骤  (1)在STM3

    2024年02月20日
    浏览(62)
  • STM32基础入门学习笔记:内部高级功能应用

    文章目录: 一:低功耗模式 1.睡眠模式测试程序 NVIC.h NVIC.c key.h key.c main.c 2.停机模式测试程序 main.c 3.待机模式测试程序 main.c 二:看门狗 1.独立看门狗测试程序 iwdg.h iwdg.c main.c 2.窗口看门狗测试程序 wwdg.h wwdg.c main.c 三:TIM定时器 tim.h tim.c main.c 四:CRC循环冗余校验计算单元与

    2024年02月13日
    浏览(45)
  • 嵌入式学习笔记——STM32硬件基础知识

    上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程,这都是解决的电脑端的开发环境问题,还没有到实际的开发板上,我们的单片机是都是焊接在开发板上的,PCB上有着它所需的工作电路。并不是直接给供电电压就可以让其工作的,本文主要是简介一下

    2024年01月22日
    浏览(75)
  • 【STM32】HardFault问题详细分析及调试笔记

    目录 1. 概述 2. 问题描述 3. 问题分析 4. 相关知识 4.1异常和中断 4.2 中断输入与挂起行为 4.3 Cortex-M4处理器的寄存器简介 4.4  C实现的异常处理 4.5 栈帧 4.6 异常返回值 4.7 异常流程 5. 问题定位 5.1 确定栈指针 5.2 确定LR的值 5.3 查询C代码位置 5.4 确定PSP栈 5.5 处理方法 6. 总结   

    2023年04月15日
    浏览(66)
  • STM32基础入门学习笔记:核心板 电路原理与驱动编程

    文章目录: 一:LED灯操作  1.LED灯的点亮和熄灭 延迟闪烁 main.c  led.c led.h BitAction枚举 2.LED呼吸灯(灯的强弱交替变化) main.c  delay.c 3.按键控制LED灯 key.h key.c main.c  二:FLASH读写程序(有记忆可以保存断电之前的状态) flash.h flash.c main.c flash操作注意事项 三:蜂鸣器驱动程序(

    2024年02月13日
    浏览(39)
  • 【嵌入式学习笔记】嵌入式基础9——STM32启动过程

    程序段交叉引用关系(Section Cross References):描述各文件之间函数调用关系 删除映像未使用的程序段(Removing Unused input sections from the image):描述工程中未用到被删除的冗余程序段(函数/数据) 映像符号表(Image Symbol Table):描述各符号(程序段/数据)在存储器中的地址、类

    2024年02月15日
    浏览(87)
  • (STM32)TIM输出比较

    TIM输出比较(OC): 主要功能输出PWM波形,PWM波形是驱动电机的必要条件,所以信息TIM输出比较就等于学习PWM CNT:计数器,计数自增,CCR:捕获比较寄存器,程序员给定的一个值 当CNT,大于、小于、大于CCR时,输出就会置0,置1,置0....,一个不断跳变的pwm的波形 每个高级定时器

    2024年02月05日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包