stm32f4-discovery | Screwing around with my STF32F4 Discovery board and ChibiOS
kandi X-RAY | stm32f4-discovery Summary
kandi X-RAY | stm32f4-discovery Summary
Just me screwing around with a STM32F4 Discovery board and ChibiOS. Also, writing a README file to make GitHub happy. ... Happy now, GitHub?.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of stm32f4-discovery
stm32f4-discovery Key Features
stm32f4-discovery Examples and Code Snippets
Community Discussions
Trending Discussions on stm32f4-discovery
QUESTION
I'm trying out STM32CubeIDE, and I've been trying to get it to work with the GDB QEMU debugging plugin that's part of the Eclipse CDT package. I've been able to create the project and debug configuration for my STM32F4-Discovery board, and the debugger partially launches, however, just as the simulator starts up, the GUI window it creates suddenly crashes and I get this error:
...ANSWER
Answered 2020-Sep-15 at 22:31So it looks like there were a couple factors as to why this wasn't working. First off, the error messages that I was getting immediately after the GUI debugger terminated were due to an incorrect installation of the arm-none-eabi-gdb package. In order to fix this, I downloaded the package from the ARM site and followed the instructions detailed here. After installing the arm-none-eabi-gdb package again, I went into the project debug configuration settings, navigated to the "debugger" tab in this window, and then changed the GDB executable path from the variables the IDE had set for me to the actual GDB executable path (in this case /usr/bin/arm-none-eabi-gdb
).
After that was done, the debugger would no longer immediately terminate, but I was still getting some errors in console shortly after it started (see below). In addition, the debugger GUI would produce no meaningful output, and Ubuntu would warn that the process had frozen.
QUESTION
The following snippet:
...ANSWER
Answered 2020-Sep-10 at 13:54SRCS += $(wildcard $(BASEDIR)FingerCell/Source/STM32F4-DISCOVERY_USB/*.c)
QUESTION
I want to compile a program with arm-none-eabi-gcc 9.2.1
using the libopencm3 project and run it on ARM Cortex-M4 processors. My program is composed of two files: main.c
ANSWER
Answered 2020-May-23 at 22:25typedef unsigned int uint32_t;
uint32_t test(uint32_t a, uint32_t b) {
uint32_t tmp0, tmp1;
uint32_t c;
for(int i = 0; i< 4096; i++) {
tmp0 = a & 0xff;
tmp1 = b & 0xff;
c = tmp0 ^ tmp1 ^ (a>>(i/512)) ^ (b >> (i/1024));
}
return c;
}
unsigned int hello ( void )
{
return(test(0x75,0x14));
}
QUESTION
I tried to use CMSIS DSP library for FFT implementation on STM32F407. I based my project on Tilen MaJerle library. I sample data with on board ADC and fill the input buffer with function TM_FFT_AddToBuffer(TM_FFT_F32_t* FFT, float32_t sampleValue). Hereafter I process data with function TM_FFT_Process_F32(TM_FFT_F32_t* FFT).
...ANSWER
Answered 2020-Apr-21 at 19:32Thanks a lot for your answers. But at last I struggled my issue myself. And about half a year it took me to sit down and write about the solution here.
For my own part, it was quite a negligent misconception of how FFT works. There is a feature consisting in that fact that the energy of the given signal is spread between the given frequency and some nearby frequencies. So if we take the magnitude of the signal at the given frequency from the results of DSP library Fourier calculation, of course, we’ll get the signal loss which increases with increase of the operating frequency at the given sample rate. But if we take the root mean square value of the magnitudes of the given frequency and of some nearby frequencies, we’ll get no signal loss.
I studied DSP accuracy capabilities in practice – for different sample rates and for the range of frequencies between 30 Hz and 32 kHz. There is a calculable frequency dispersion in which we should calculate our signal magnitude as a root mean square value of the magnitudes of the frequencies inside the dispersion. And there is a calculable frequency definition error. The higher the sample rate, the farther is the calculated value of the signal frequency. By the calculated signal frequency we mean the frequency for which we see the magnitude maximum (when observing a clear sinusoidal signal). But the frequency shift is predictable and doesn’t make any problem. The more important property is signal spreading. If we take it into account and calculate the signal magnitude more thoroughly it will give us excellent results. Mine are that now my calculations finely coincide with voltmeter GVT-measurements in dBm. The difference is not more than 2% in the range of -40 … +22 dBm, for frequencies (30Hz…32kHz).
Here there're some results of magnitude calculation via a wide frequency range with voltage level 0,2Vrms. Blue line is measured with AC voltmeter. Red line is my measurements with FFT library. Number of samples – 4096 and sampling rate differs for special frequency sub-ranges. It is 4096 Hz for F=(30…1024)Hz, 20480 Hz for F=(1024…4096)Hz, 40960 Hz for F=(4096…8192)Hz and 81920 Hz for F=(8192…32000)Hz. As you see, the results are very satisfying.
I believe that for the people who are at their best with mathematical basics of Fourier transform my case is quite a simple task. But maybe I didn’t get the basics at once and too much reckoned on the DSP library calculation capabilities, so I’ve lost some time and nerve resources on the issue described. But now it’s OK and I’m deeply satisfied with DSP FFT realization
QUESTION
Here are the data types on STM32 microcontrollers: http://www.keil.com/support/man/docs/armcc/armcc_chr1359125009502.htm.
These microcontrollers use 32-bit ARM core processors.
Which data types have automatic atomic read and atomic write access?
I'm pretty sure all 32-bit data types do (since the processor is 32-bits), and all 64-bit data types do NOT (since it would take at least 2 processor operations to read or write a 64-bit word), but what about bool
(1 byte), and uint16_t
/int16_t
(2 bytes)?
Context: I'm sharing variables between multiple threads (single core, but multiple threads, or "tasks" as they are called, in FreeRTOS) on the STM32 and need to know if I need to enforce atomic access by turning off interrupts, using mutexes, etc.
UPDATE:
Refering to this sample code:
...ANSWER
Answered 2018-Oct-12 at 18:32Depending what you mean by atomic.
If it is not the simple load or store operation like
QUESTION
I am trying to get running the GPIO_EXTI example from the STM32Cube_FW_F4_V1.24.0 using CMake and the actual GNU Tool Chain Version 9_2019_q4_major on Windows via Cygwin Terminal. The Project shall run on the STM32F4-DISCOVERY board.
I have a CMakeLists.txt file, which based on Cmake File.
...ANSWER
Answered 2020-Feb-10 at 12:28I answer to my own question.
It is important, that all parameters for e.g. CMAKE_C_FLAGS are in one line, otherwise creating of the make file will fail.
The code of the toolchain cmake file is:
QUESTION
Recently I've been trying to do FFT calculations on my STM32F4-Discovery evaluation board then send it to PC. I have looked into my problem - I think that I'm doing something wrong with FFT functions provided by manufacturer.
I'm using CMSIS-DSP libraries. For now I've have been generating samples with code (if that works correct I'll do sampling by microphone).
I'm using arm_rfft_fast_f32
as my data are going to be floats in the future, but results I get in my output array are insane (I think) - I'm getting frequencies below 0.
ANSWER
Answered 2017-Feb-17 at 20:45I'm using
arm_rfft_fast_f32
as my data are going to be floats in the future, but results I get in my output array are insane (I think) - I'm getting frequencies below 0.
The arm_rfft_fast_f32
function does not return frequencies, but rather complex-valued coefficients computed using the Fast Fourier Transform (FFT). It is thus perfectly reasonable for those coefficients to be negative. More specifically, the expected coefficients for your single-cycle sin
test tone input with an amplitude of 15 would be:
QUESTION
I am trying to store data in flash memory on a STM32F411VET6. I want the memory to store and stay there even after rebooting the MC. I have looked at this, this, this and this examples but I am still not sure that I am doing this correctly. I was able to create a location in memory (I checked in the map file) with this as my scatter file:
...ANSWER
Answered 2019-Feb-25 at 15:10I was able to get the solution with some help from Kamil Cuk that helped me solve some issues. One of the problems I was experiencing with the scatter file was that my load and execution addresses were not the same causing linker to not work as intended (very well explained in this link). I modified my .sct file to the following:
QUESTION
I am testing IlI9341 3.2 TFT LCD on stm32F4-discovery. I wired based on Discovery datasheet. I also read ILI9341 datasheet and went through all registers. However I get nothing. Also, the LD7, LD5 and LD6 keep on indicating overflow of current. Compiled using Coocox IDE. The functions SETCURSORPOSITION and FILL are further down. Here is my code if someone can help me. Thank you.
...ANSWER
Answered 2017-Oct-09 at 09:44There is a typo there, you're not configuring GPIOE
at all.
change the last GPIO_Init()
call to
QUESTION
Update: Maybe the better question to ask is how should I go about debugging this problem? I'm using VS Code with OpenOCD debugger. I always clean build. The best I can do once I JumpToApplication() is see what addresses the debugger stops at when I pause/step into.
I am able to flash a program into Partition A (@address 0x8060000) and verify it with a CRC check. The program runs anything in while loop fine (LED3 toggling, UART); however, the LED2 toggling based off of a timer interrupt does not work. When I flash the program normally (ie not with my bootloader) it works 100%, including LED2 toggling.
Here are some of the resources I have addressed (1, 2, 3, AN2606). How do I get the interrupts working for my second application? The resources recommend I clear pending interrupts, but I don't know the best way to approach that. In my bootloader app I use the ETH, UART and GPIO peripherals so I will go through the manual and read registers to clear the interrupt flags but what about the other interrupts like NMI, HardFault, do I have to figure out how to clear those as well? Through my Google searching I have not found any convenient functions to clear all pending interrupts, does it exist?
Below I include the jump function/linker file for the bootloader application at 0x8000000 and the main.c/linker file for the application at 0x8060000:
JUMP FUNCTION IN BOOTLOADER PROGRAM AT 0x8000000
...ANSWER
Answered 2019-Mar-12 at 13:34In projects generated by STM32CubeMX, the SystemInit()
function in system_stm32f4xx.c
, called by the startup code before main()
, resets the vector table address register to the start of the FLASH.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install stm32f4-discovery
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page