• 在C ++中嵌入式OO状态机的最佳设计是什么?

    我正在尝试为微控制器在C ++中实现面向对象的状态机。我研究了状态设计模式,但发现由于动态内存分配,大多数示例都不适合嵌入式应用程序,因此我想出了自己的方法: 我的主要考虑因素是:有关状态行为的所有信息都存储在函数中。其他方法对每个状态使用虚拟函数和派生类。这使我想到了一个问题:我应该在哪里实例化所有这些状态对象。我不想让所有State对象都弄乱我的主代码。这导致我采用这种方法,而没有为每个状态使用单独的实例: A abstract StateMachine class which contains the...
  • 从中断调用的成员函数是否应标记为易失性?

    我的代码中有一个中断,该中断调用了几个成员函数,并且在某些情况下,这些成员函数会修改类的成员变量。成员变量被标记为volatile,因为它们是在程序正常流程之外进行修改的,但是我想知道函数本身是否需要标记为volatile?从一点阅读看来,这似乎不是必需的,因为对象本身不必是volatile,只需要更改其某些成员即可,但我只想检查一下。
  • STM32闪烁的LED错误的寄存器?

    有谁知道为什么代码不起作用? RCC->AHBENR |= RCC_AHBENR_GPIOBEN; GPIOB->MODER &= ~(0x3u << 6u); GPIOB->MODER |= (0x1u << 6u); for (int i = 0; i < 1000; i++) { GPIOB->ODR |= (0x1u << 0x3u); } return 0; } 我正在使用STM板(STM32L432KC),该板具有一个集成的LED...
  • 带有外部中断的STM32F4 GPIO LED

    我试图使用连接到PA1的外部按钮触发外部中断,以便打开LED(在PD12上)。我尝试使用在stm32f4xx_it.c中声明的变量并将其在EXTI1_IRQHandler内设置为1,还尝试使用GPIO回调函数。但是,即使未按下按钮,该引脚似乎也连续被检测为高电平。 预期结果:未按下按钮>> LED熄灭>>已按下按钮>> LED点亮 实际结果:未按下按钮>> LED点亮>>已按下按钮>> LED点亮 我不知道为什么会这样,我尝试测试看看我是否将面包板上的按钮接线错误,但是如果我将一侧连接到+ 5v并串联一个电...
  • 导致时间问题的sprintf?

    使用sprintf时遇到一个特殊的问题。 I need a char array to look like this: g;arg;cmd;e;, where arg gets leading zeros so it is always 3 chars long, and cmd gets leading zeros so it's always 15 chars long. As an example, if arg = 20 and cmd = 3749, I need a char array loo...
  • 如何以尽可能少的延迟同步2个微控制器

    我在如何使用具有极低延迟的多个MCU上遇到问题,我还没有决定使用任何特定的IC,但是大多数IC具有1 2 3或4个PWM引脚,我至少需要10个,但它们必须由驱动器同步运行在这种情况下,1个旋转脉冲传感器(位置传感器)的定时非常重要,我绝对不是专业人士或经验丰富的人,我真的希望有人能帮助我,我的大部分工作只是在理论上针对该项目,但我正在寻找任何可能的方法这样做的方式,如果可能的话,也许有人可以帮助您了解一个好的MCU模型。我能以某种方式从单个MCU驱动更多的PWM通道吗,这些部件将放在同一块板上,不关心其工作...
  • FFT:当我通过ADC读取音频信号时,它是信号的实部还是虚部

    So am reading on the implementation of FFT from The engineer's guide to DSP its a pretty good book but there is something that is Confusing me .. 例子中使用的信号由两部分组成..实部和虚部..当我从连接到微控制器的ADC读取音频信号时。该信号是什么..它是实部还是虚部。 ??我需要先对信号进行一些分析以提取实部/虚部吗? 我的数学不是很好,所以如果您知道答案,请尽...
  • C解析器,用于从UART输出传感器

    我正在尝试在C中创建一个解析器,该解析器可以从传感器读取输出数据(数据参数有3种类型),为其中一个参数计算最大值,并在1分钟的间隔内计算另一个参数的平均值(传感器供稿)每4秒更新一次数据)。来自传感器的数据通过UART馈入MCU。我对如何使程序能够读取输出数据感到困惑。 这是来自传感器输出的一些示例数据: Pmtr 1 Pmtr 2 Pmtr 3 1262.0、1.168、0.149, 1264.0、1.173、0.167, 1266.0、1.179、0.171, 1268.0、1.184、0.171, 1...
  • 如何改善“压电蜂鸣器”的性能?

    我看过很多视频,人们在演奏带有压电的不同音乐……我一直在尖叫。我不知道如何开始至少进行几次尖叫? (使用AT90USB647) int Start_Beep() { DDRB = 0b01000000; // DDRB |= (1<<PB6) for(int i = 0; i < 2000; i++) { PORTB ^= 0b01000000; char delay_cnt = 0xAA; while(delay_cnt)...
  • 微控制器中Scikit-Learn的机器学习部署

    I have developed my code in Jupyter notebook for ML classification using Scikit-learn Random Forest algorithm. I have trained and tested the model. Everything's good. 下一步,我想将此ML模型部署到我的微控制器STM32F051中。我知道微控制器可以在C / C ++上运行,并且具有巨大的性能限制。通常的做法是将整个代码逻辑转换为C / C +...
  • 我如何通过SW3来“停止” IF ELSE语句(如果它是一个开关)

    我目前正在尝试对设备进行编程,这将使我能够所谓的“停止/覆盖/暂停” if else语句,并在当前if / else运行时运行另一个功能。 SW3是我将要启用该功能的按钮。任何帮助将被申请。 #include if(key == 3) /* OPTION F */ { LCD_sendCW(0b10000001); // Return cursor to home position for (i=0; FESS[i]!=0; i++){ ...
  • 避免在等待信号时忙于等待

    我正在尝试编写一个可以轻松移植到任何MCU的代码。该MCU将充当主机并与另一个音频编解码器芯片进行通信。与芯片通信时,主机MCU将向芯片写入请求,并等待中断线变高,然后从芯片读取响应。 Currently, I am using a Raspberry Pi as a host and hence I can poll the sysfs entries of the interrupt line. How can I achieve this in a primitive system which may...
  • 优雅地访问可能不存在的内存

    我正在使用像arduino这样的微控制器(ARM指令集),该微控制器具有一些不连续的32位存储器映射寄存器(控制/状态寄存器,CSR),如下所示: #define Comparator0_CSR0 0xA000 (No 0xA004 register) #define Comparator0_CSR2 0xA008 #define Comparator0_CSR3 0xA00C #define Comparator1_CSR0 0xB000 #define Comparator1_CSR1 0x...
  • 用C语言对微控制器进行文本解析

    我想解析来自通过uart传达的用户输入的以下信息 I2C扫描 I2C读取read_adress I2C写入Write_address数据 我正在使用以下代码 void parser_i2c(unsigned char str[20]) { //unsigned char str[20] unsigned char s[2] = " "; unsigned char *token; unsigned char output[1...
  • 需要数字标识符前的期望标识符或'('的解决方案吗?

    我正在通过使用stm32多维数据集IDE开发用于Stm32f407rct6微控制器的固件。我的固件即将完成,但是我遇到了一个小错误,例如预期的标识符或下一行中的数字常量之前的'('),请给我解决方案 #define NUM_RX_BYT 8 #define CFGR 0 // this Line is where iam getting the error #define CELL 1 #define AUX 2 #define STAT 3 #define CFGRB 4 #define CS_PIN 1...
  • TI Stellaris微控制器头文件<LM4F120H5QR.h>中的“(unsigned int *)0x400253FCU”是否为指针?

    背景: 我正在学习嵌入式系统编程。在此过程中,我了解到“指针”最适合嵌入式系统。指针是用C声明的变量,其值是另一个变量的地址。而且我可以通过取消引用指针来操纵/更改该其他变量的值。 例: int *pt; // Integer pointer variable declaration. float *pf; // Float pointer variable declaration. int *pt means that pt is a pointer variable capable of p...
  • 未定义对`vtable的引用

    我创建了感官类和传感器工厂的类层次结构,并且在编译时从链接器获取错误消息。 未定义对TSensorFactory的`vtable的引用 我试图根据堆栈溢出和其他地方可用的答案找到一种解决方案,并且至少现在已经尝试解决这一问题,但到目前为止似乎没有任何效果。头文件的代码是: #ifndef TSENSORFACTORY_H_932713048 #define TSENSORFACTORY_H_932713048 #define DALLAS_TEMPERATURE_PRECISION 10 #define ...
公告

《从零开始开发BBS》课程上线啦,快来跟着我一步步搭建属于你的BBS吧。

课程地址:https://www.shiyanlou.com/courses/1436
9折优惠邀请码: ZHwfIjb1

该课程会带领大家一步步的了解并熟悉Go语言开发,如果你是一个Go语言初学者,或者正准备学习Go语言,那么这个课程非常适合你。如果你熟练掌握了本课程中的知识点,相信你就已经入门Go语言开发,并能胜任日常的开发工作了。