Hi,
Where should I begin, and what shall I do to learn programming ARM processors?
I have got a Discovery development board (STM32F0308), and I am looking into learning this family of processors STM32F030.
Can anybody give me some advice?
I am pretty good at programming PIC microcontrollers in C, so I won't start from zero knowledge,......or should I forget everything and start afresh?
Thanks.
My experience with micro-processors are they all function in much the same way.
ARM has a whole host of Technical Reference Manuals for their cores, Joseph Yiu has a particularly good series of Cortex-Mx books. There's one on the M0, if that's where you're staying, but it's a pretty nut-less ARM as they go.
Most of the differences between parts comes from the vendor implementations that surround the core. You'd want to review the vendor documentation (Data Sheets, Reference Manuals, etc) to understand how the peripherals work.
There are plenty of books on ARM, and assembler, although the latter might be frustrated by the reduced instruction set of the M0
Look for some reference code - preferably C and not assembler - and read it at the same time as you read the datasheet/user manual for the specific processor, to get a feel for how the program interacts with the peripherials.
Then spend time reading through the processor documentation, so you get a feel for all the features supported by the processor.
I'd leave it as a later stage, when you are already comfortable with writing and debugging C code with reading up on any assembler instructions. The Cortex family of chips are designed to allow even the startup file to just use C code, and there is no reason to switch to assembler unless you really do need to squeeze the last performance out of a chip because of cost.
Just realize that not all reference code is written by good software developers, so it may not be as easy to read as it should have been. And it may not follow any recommendable coding styles. But the main goal with reference code is to complement the manuals, helping you find out what parts of the manuals that are relevant for different tasks.
http://www.keil.com/books/
http://www.infocentre.arm.com
www.lmgtfy.com
I don't know much about PIC and ST' ARM.
The interrupt handling of traditional PIC is quite different from ARM Cortex-M. The PIC tool-chain tends to hide things like startup-files, header-files; however, for ARM Cortex-M, you would need to know which startup-files, header-files you are using.
Since you are good at PIC C programming, I think you can start with fiddling the example codes of Discovery development board. You need to be familar with ARM tool-chain, debugger, and how to find documentaions and reference codes from your chip vendor.
And, recently, chip vendors tend to provide library-style example codes, libraries would hide the register accessing. I am not so sure about this is good for developers or not.