This is the third part about ARM Cortex-M and how the interrupts are used. In Part 1 I discussed the Cortex-M interrupt system and in Part 2 I showed nested interrupt examples. This part is about FreeRTOS and how it uses the Cortex-M interrupt system.
In “ARM Cortex-M, Interrupts and FreeRTOS: Part 1” I started with the ARM Cortex-M interrupt system. Because the ARM implementation cann be very confusing, I confused myself and had to fix and extend the description in Part 1 :-). Thank for all the feedback and comments!
Originally I wanted to cover FreeRTOS in Part 2. Based on the questions and discussions in Part 1 I thought it might be a good idea to provide visual examples.
When I have hit ‘publish’ for this post, the McuOnEclipse blog exists for exactly 0x888888 seconds. Or almost. I admit there might be a latency of a few seconds. But hey, that’s still a good (hexadecimal) number! :-).
I would like to reach out about what you would like to see on McuOnEclipse in a not too distant future:
- What do you like the most?
- About what should I write more?
- Any other subject or topic you would like to see?
Add a comment if you have anything else on your mind.
Happy Polling 🙂
The ARM Cortex-M microcontroller are insanely popular. And it features a flexible and powerful nested vectored interrupt controller (NVIC). But for many, including myself, the Cortex-M interrupt system can be counter-intuitive, complex, inconsistent and confusing, leading to many bugs and lots of frustration :-(.
Understanding the NVIC and the ARM Cortex-M interrupt system is essential for every embedded application, but even for if using an realtime operating system: if you mess up with interrupts, very bad things will happen….
For next semester I plan to use the tinyK20 as a remote controller for the Zumo Robots. I already had an early prototype presented in “3D Printed Gameboy and Remote Controller with tinyK20 Board“, so here is the next iteration of, in a sneak preview:
3D printing is like cooking or like BBQ: It is more about barometric pressure, humidity and temperature than you might think of. To me, printing (and cooking) is a combination of art and science. And as with cooking, sometimes the result is not usable.
I’m very happy with the Ultimaker 2 printing PLA material. For a LED matrix project I have to use ABS as this material is suitable for higher temperature: PLA simply will not stand the heat produced by the LEDs I’m going to use. And here the joy ended: printing using ABS was definitely no fun. While the first small test print came out OK, I produced afterwards a pile of unusable parts because of warping :-(.
It seems that my pulled pork BBQ (see “Tutorial: BBQ Pulled Pork“) gets more and more fans :-). We will have a BBQ party for 10 person tomorrow evening :-). In preparation for that, the two pork shoulders started brining in the refrigerator from yesterday night on. Today we prepared the BBQ sauce for tomorrow, in four different styles: North Carolina, South Carolina, Alabama and Kansas:
I kind of hoped that after “Why I don’t like printf()” and all my other articles about printf and semihosting, that topic would be 200% handled and I won’t have to deal with any more. Well, I was wrong and underestimated how the Kinetis SDK is interfering with semihosting. And I underestimated how many of my readers are still using semihosting (even as there are other and better alternatives), so I keep getting questions and requests for help. That’s ok, and I hope I can help :-).
So here is yet again another post about how to turn on semihosting with Eclipse, GNU ARM Embedded and the Kinetis SDK v2.0. This time with the FRDM-K64F board:
Getting a board from a distributor like Farnell/Element14/Mouser (add your own distributor) means that chances are high that the default firmware on it is written years from now because the inventory has not been updated, or because boards are still produced with that original firmware (because of testing?). So what happens if I use board with a firmware developed pre-Windows 8/10 area?
It might work, but chances are high that the bootloader and firmware is not ready for the ‘modern age’, and as a result the board might be bricked. If you still have a Windows 7 machine around (I do!), you are lucky. If not, then you need to read this article….