标签: stm32

能否实现并行处理?

MCU 真的可以进行并行处理吗?

假设我想倒计时,通过另一个接口发送数据,然后再做一项工作,例如同时点亮一个 LED。

这甚至可能吗?

embedded parallel-processing stm32

0
推荐指数
1
解决办法
3253
查看次数

STM32上升下降按键中断检测

我有按钮中断:

    void EXTI0_IRQHandler(void)
    {
        if (EXTI_GetITStatus(EXTI_Line0) != RESET){

            if (/* BUTTON IS RELEASED */) {
                /* do something */          
            }
            if (/* BUTTON IS PRESSED */) {
                /* do something else */
            }
        EXTI_ClearITPendingBit(EXTI_Line0);
        }

    }
Run Code Online (Sandbox Code Playgroud)

有没有可能检查这个?

events interruptions stm32

0
推荐指数
1
解决办法
2万
查看次数

Stm32f303免费版

我尝试在 stm32f303 discovery 上运行 freertos。我包括从官方网站下载的 freertos 存档中的所有头文件和源文件。我还包括文件夹中的便携式文件/GCC/ARM_CM4F。我使用 codesourcery lite 编译器。当我尝试编译项目时出现错误:

In file included from freertos/inc/portable.h:321:0,
                 from freertos/inc/FreeRTOS.h:100,
                 from freertos/src/croutine.c:66:
freertos/inc/portmacro.h:167:7: error: missing binary operator before token "long"
Run Code Online (Sandbox Code Playgroud)

portmacro.h的 167-172 字符串:

    #if( configMAX_PRIORITIES > 32 )
        #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32.  It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.
    #endif …
Run Code Online (Sandbox Code Playgroud)

gcc stm32 freertos

0
推荐指数
1
解决办法
1597
查看次数

USART协议设备可以连接UART协议设备吗?

我正在尝试使用使用 USART 协议的 STM32 与 UART 协议设备进行通信。对于 USART,我只使用 tx 和 rx 引脚,这意味着它在异步模式下工作。我是 STM32 的新手,对 USART 和 UART 通信有点困惑。

serial-communication stm32 uart usart

0
推荐指数
1
解决办法
3019
查看次数

STM32多通道输入捕获所有通道上的过度捕获(中断未执行)

我有一个STM32F302CBT6(运行在72MHz)项目,我需要测量4个信号的频率,每个信号约250kHz.信号连接到TIM1通道1-4.

现在,了解250kHz太快(或者是?)同时处理所有那些输入捕获中断(因为它们可能同步或同时发生......)我想逐个测量每个通道.我在程序开始时初始化了所有通道,并考虑在每个通道测量后逐个启用相应的中断.这是一个合适的想法还是我错过了什么?

问题是在为通道1提供第一个中断之后,下一个中断从未得到服务,因为虽然没有使能中断,但状态寄存器还有多个其他待处理中断(CCxIF和CCXOF,以及CxIF)以及设置的过捕获标志.我试图通过读取所有捕获值或设置TIMx-> SR = 0但没有帮助来避免此问题.

我将如何测量这些信号以及确保正确捕获每个通道的正确方法是什么?

我对此非常感兴趣,并希望了解如何进行这种处理或者如果你能指出我做错了什么.谢谢.

我目前的相关代码如下.

这是中断处理程序:

void TIM1_CC_IRQHandler(void) {
if (TIM_GetITStatus(IC_TIMER, IC_CH1) == SET) {
    /* Clear TIM1 Capture compare interrupt pending bit */
    TIM_ClearITPendingBit(IC_TIMER, IC_CH1);

    //Read the capture value
    raw_captures[capture_index] = TIM_GetCapture1(IC_TIMER);
    capture_index++;

    //Also read the others to avoid overcaptures
    TIM_GetCapture2(IC_TIMER);
    TIM_GetCapture3(IC_TIMER);
    TIM_GetCapture4(IC_TIMER);

    if(capture_index == 2) {
        TIM_ITConfig(IC_TIMER, IC_CH1, DISABLE);
    }
} else if (TIM_GetITStatus(IC_TIMER, IC_CH2 == SET)) {
    TIM_ClearITPendingBit(IC_TIMER, IC_CH2);

    //Read the capture value
    raw_captures[capture_index] = TIM_GetCapture2(IC_TIMER);
    capture_index++;

    TIM_GetCapture1(IC_TIMER);
    TIM_GetCapture3(IC_TIMER);
    TIM_GetCapture4(IC_TIMER);

    if(capture_index == 4) …
Run Code Online (Sandbox Code Playgroud)

c timer interrupt stm32

0
推荐指数
1
解决办法
2113
查看次数

如何在 STm32 核板 (mbed) 上写入 SRAM

我想在芯片上的 SRAM 中存储一个简单的整数。(Cortex M4) 我用的程序是mbed online。我知道 SRAM 的地址从 0x2000 0000 开始,并且芯片有 4KB 的内存。

我已经阅读了数据表和位带部分,但这对我来说没有意义。

有人可以向我解释我如何在SRAM中存储例如数字5并再次读取它吗?

当前代码是这样的(c是一个整数,用户通过按钮改变):
if(c==100){ temp=c; MBX_B0 = 1; // Word write temp = MBX_B7; // Word read
TIMER_B0 = temp; // Byte write return TIMER_B7; // Byte read } pc.printf("%d",temp);

它只是在 c==100 后停止运行 即使在断电后也应该保存该值。

c stm32 mbed

0
推荐指数
1
解决办法
6789
查看次数

将标头添加到固件映像 stm 32

我正在着手在 STM32(类似于 IAP AN4657)上开发自定义引导加载程序。假设flash分为3个区域scratch,user area,IAP code(bootloader)和待升级的固件都在scratch area。我想要一个带有固件版本和校验和的标头,我需要了解如何实现固件标头并从 IAP(引导加载程序)代码检查固件的有效性。对资源的任何参考表示赞赏。

c stm32 bootloader

0
推荐指数
1
解决办法
1953
查看次数

STM32的CANBUS功能模式初始化设置是什么意思?

我想了解以下功能模式定义的含义,库中有解释。但我不明白,因为解释很短而且不够。我在网上搜索我找不到任何有关的信息。

CAN_InitStructure.CAN_TTCM = DISABLE;
    CAN_InitStructure.CAN_ABOM = DISABLE;
    CAN_InitStructure.CAN_AWUM = DISABLE;
    CAN_InitStructure.CAN_NART = ENABLE;
    CAN_InitStructure.CAN_RFLM = DISABLE;
    CAN_InitStructure.CAN_TXFP = ENABLE;
Run Code Online (Sandbox Code Playgroud)

can-bus stm32

0
推荐指数
1
解决办法
2015
查看次数

尝试在无头模式下构建我的项目,但收到警告:没有匹配的项目

我在 STM32CubeIDE 中有一个项目,我使用以下命令在无头模式下从命令行运行该项目:

headless-bat -project "my-project-name/Debug" -build

并且构建成功。但是,当我尝试将同一项目复制到另一个目录并尝试运行它时,我收到此错误警告:没有与我用它编写的项目名称匹配的项目。我将项目复制到 c:/myworkplace,然后运行以下命令:

headless-bat -project "my-project-name/Debug" -workplace "c:\myworkplace" -build

但我收到了上面提到的错误。有人有什么主意吗?

microcontroller stm32 stm32cubemx

0
推荐指数
1
解决办法
5280
查看次数

我正在尝试读取温度的 ADC 值,如果达到非常热的状态,则通过 UART 发送

所以我可以读取温度的 ADC 值,并且当它达到太热值时我也会发送一个字符串。但我的问题是;它多次发送字符串。我想只发送一次。我试图通过使用延迟来修复它,但效果不佳。

    if ( LM35_ADC_Value == 580 )
        {   
           USART_puts(USART2,"VERY_HOT\n");
           delay(1680000000000);
                                                                                 
        }
Run Code Online (Sandbox Code Playgroud)

c embedded stm32

0
推荐指数
1
解决办法
48
查看次数