Skip to main content

Giving TrueStudio a shot

Since my first encounter with ST microcontrollers I have always used the Keil IDE. I have nothing against it, well maybe the fact it is lacking in the aesthetics department compared to modern IDE design. But as an engineer does that really matter? I will take a tool that just works versus one that looks pretty and gives trouble. But what if we could get a tool that jut works and can also look pretty?
I am not implying that this is what TrueStudio offers, after all its based on Eclipse, and I happen to dislike eclipse based IDEs or anything running on Java, but they sure do look pretty.
I have only been using TrueStudio a few days and so far so good. I have a pretty capable laptop so I am not hating Eclipse as much because those laggy menus are not as prominent. What really made me give TrueStudio a try was that ST purchased Atolic thus making TrueStudio available for free to use with ST devices. This is a great move by ST, they have quite an array of supported IDEs, giving their users as many options as they could possibly want. This means that STM32 CUBE MX now has support to generate projects specific for TrueStudio, not that I use CUBE HAL much but the fact that ST thought it worth their while spending $7 million on the IDE or rather the Atolic company inspires confidence that they will continue to support the IDE and its development for years to come.

ST has acquired Atollic for a cash payment of $7 million, funded with available cash, and a deferred earn-out contingent on certain conditions, which ST currently estimates will be about $1 million.

Likewise Keil is owned by ARM so that also should inspire some confidence in its users. One thing I do love about ARM is that when I open a project for a specific ARM chip that I have not used before, Keil immediately asks if I want to download the supporting files. So I always have the most up to date CMSIS libraries and vendor header files for any ARM based microcontroller vendor not just ST and this I LOVE!!! With TrueStudio I am not sure about the library updating process, but I am sure it is probably a little bit more involved.

Debugging on the free version of Keil is limited to 32kb code size. I have never exceeded this in my personal endeavors. Debugging on TrueStudio is not limited by anything, all features are unlocked. So far so good given how little time I have used it.
I will update this post as I find more pros and cons concerning TrueStudio.


Popular posts from this blog

Interface a Rotary Encoder the right way.

So whilst reading my favorite odyssey found here I stumbled onto something I never spotted before. It turns out that the general purpose timers support hardware interfacing with an incremental encoder. This means no more interrupts and no need to increment whatever variable you had. Now all you have to do is get the value from the Count register in the timer. Did I also mention it takes care of figuring out which direction you are turning it? Amazing! Lets talk about it.

Encoder Interface Mode Verbatim from the reference manual of the STM32F103 page 392 or Section 15.3.12  "Encoder interface mode acts simply as an external clock with direction selection. This 
means that the counter just counts continuously between 0 and the auto-reload value in the 
TIMx_ARR register (0 to ARR or ARR down to 0 depending on the direction). So the user 
must configure TIMx_ARR before starting. In the same way, the capture, compare, 
prescaler, trigger output features continue to work as normal."

STM32L0/F0/F3 I2C : Part 3 RX TX via DMA

Most modern microcontroller come with a peripheral called DMA which allows for an even more hands-off approach. The Direct Memory Access controller will get a tutorial of it's own in the future. However, it is so simple to use that I can easily explain the required bits in this tutorial without feeling like I will overwhelm the reader. In this iteration of the I2C series I will cover how to TX and RX date on the peripheral in conjunction with the DMA controller. 

First let me briefly explain in a high level what the DMA controller does. It allows you to transfer data in 3 ways: Peripheral to memoryMemory to peripheralMemory to memory. What does this mean? For example, when you receive data on I2C in your RXDR register, you can have the DMA controller move that data received into an array. At the end of the day your variables are just memory locations, so if you have declared an array it has an address associated with it, this is address is what the DMA considers  "Memory"…

STM32 I2C Does it suck?

Recently I have been annoyed with  bugs in the I2C implementation in ST's F1/L1/F40/F2 series, and  any microcontroller made by ST before 2012. There appears to be, what I can only describe as, a race condition when attempting to receive data in I2C interrupt(low priority)  or polling mode.

Just to be clear a race condition is defined as , verbatim from wiki: "the behavior of an electronics, software, or other system where the system's substantive behavior is dependent on the sequence or timing of other uncontrollable events. It becomes a bug when one or more of the possible behaviors is undesirable."
I was humming along trying to make my YouTube tutorials when I arrived to the I2C protocol implementation. I have used I2C with the F1 series plenty of times, however I have never had the need to receive data from a slave. However for the sake of completeness I decided to implement an RXing routine in I2C for my tutorial. Only to find statements like this in the referen…