我喜欢按下按钮来切换电路板上的4个LED,就像
Click-1 --> LED 1 on
Click-2 --> LED 2 on
Click-3 --> LED 3 on
Click-4 --> LED 4 on
Click-5 --> LED 1 off
Click-6 --> LED 2 off
Click-7 --> LED 3 off
Click-8 --> LED 4 off
Click-9 --> LED 1 on
…
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个,但按钮点击检测没有按预期工作:
/*
* This file is part of the libopencm3 project.
*
* Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>,
* Copyright (C) 2010 Piotr Esden-Tempski <piotr@esden.net>
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com> …Run Code Online (Sandbox Code Playgroud) F4xx系列芯片的STM32手册表示应用程序将TXFFLSH寄存器中的位写入OTG_FS_GRSTCTL以刷新TxFIFO.作为注释,它提到......应用程序必须在检查核心既不写入TxFIFO也不读取TxFIFO之后写入该位.作为一种方法,它建议确保NAK有效中断被设置(我认为这意味着寄存器中的GINAKEFF位OTG_FS_GINTSTS)以确保内核不读取FIFO,并检查AHBIDL(AHB空闲)位OTG_FS_GRSTCTL被设置为保证FIFO中没有任何内容.STM提供的(糟糕的)USB OTG库忽略了这两种检查,而免费libopencm3库只检查AHB空闲位.我的问题如下:
在执行上述检查和写入TXFFLSH位之前,本手册未建议禁用USB OTG内核.这是否可以让核心可能在执行检查和写入TXFFLSH?之间开始使用FIFO .
"NAK有效"位仅保证不会从非周期性端点的TxFIFO读取数据.除非核心被禁用,否则核心是否仍然可以将FIFO用于等时端点?
我知道这些都是"挑剔"类型的问题,但我正在研究的项目应该会产生一个非常可靠的硬件,客户多年来无法检查设备,因此这些微妙之处很重要(是的,我们启用了看门狗)等等,但我们需要核心在大多数时间没有重置的情况下工作.
我被告知每个STM32F103RET设备都带有一个唯一的设备ID.如果检索ID的过程是什么?我正在运行一个系统,其中我与多个STM borads进行通信.为了区分每个STM板,我可以使用这个唯一的Id.谢谢
我有一个 STM32 BluePill 板(带有 8Mhz Quarz 的 STM32F103C8),并尝试上传一个用 LibOpenCM3 和 FreeRTOS 制作的小闪烁程序。但由于某种原因,FreeRTOS 在 vTaskStartScheduler() 中挂起,sys_tick_handler 也没有执行任何操作。
我没有使用调试器,只是在 sys_tick_handler 函数内放置了一个 gpio_reset ,并在 vTaskStartScheduler 调用之后测试代码是否被执行,但它似乎没有做任何事情,我不明白为什么。代码可以在这里找到:https ://gitlab.com/feldim2425/stm32-testing
更新:我用 OpenOCD 进行调试,发现它跳入了 Hard_fault_handler 更新 2:UsageFault-Status-Register 设置了 NOCP 位