Vladimir
What I mean is that whoever writes the actual code that users put in their product "needs" to know about the registers - whether it is the person preparing the code that is pieced together with a graphical tool or whether its is a HAL library. The idea is to add an abstraction layer so that the application developer can concentrate on the application and not the underlying details (although embedded programmers will always be working closer to the HW than an application programmer on a PC platform, for example).
Whether your preferred method is to click boxes in a GUI or select defines is your choice but both will generally work. The question is however which works better (also which gives greatest choice and better code quality for the actual project in hand)?
I am not yet convinced that you have found your luxury solution because I see that after one week of work (or waiting) you don't yet have a solution for clocking from the RTC while I have one by commenting in or out a single define in a header file. (Also in a free open source reference that is available for everyone willing to invest a few minutes to download it).
I'll do another test:
- I just took the project and modified the same RTC setting for a TEENSY-3.5 (your HW).
- Then I did a couple of other configurations to add a FAT file system with the SD card, plus a command line interface on the USB interface (USB-CDC) as composite with USB-MSD so that the SD card appears as an external hard drive when connected.
- I build it with GCC and simulated it in Visual Studio to check some basics (see screen shot below where the simulation confirms USB operation, the clock speeds and the SD card pin out
- I have attached the HEX file that can be loaded to a real TEENS 3.5 board for anyone who wants to try it.
I don't actually have a TEENSY 3.5 so I can't test (and be 100% sure) but I do expect it to operate with a high probability (there are various Teensy 3.5 and Teensy 3.6 users of the project who have confirmed full functionality and especially the uTasker serial loader is used by many Teensy 3.1, Teensy 3.5 and Teensy 3.6 projects or products derived from them).
Furthermore, if I decide to do the same on a teensy 3.6 (K66) I can change a single define (TEENSY_3_5 to TEENSY_3_6) and the complete HAL will switch to the other chip and HW (I can do the same for about 60 standard Kinetis boards/chips too). I timed the work to be under 5 minutes so if it were to fail I would have a little reserve to debug something if necessary.
In comparison, I find the abstraction power much greater than the graphical tools which are limited and need to be repeated for each processor type. Also the library HAL has a much better and higher abstraction level - for example a user can run code on any chip, on any UART (UART, LPUART, with INTMUX, or whatever just by specifying its interface number, meaning porting for each new chip is a thing of the past).
Additionally, remember that the (complete chip) configuration that your are presently doing is something that can generally be done in a few minutes (by both methods if they work) and represents only maybe <0.01% or real product development effort. What baffles me on a daily basis (I consult many Kinetis product developments) is that a tool set is often chosen based on the fact that it may be easier to set up the project (an almost insignificant part of the overall time and cost), and then the entire development may suffer because the rest that was inherited was often un-maneagable and unreliable.
Finally, you are absolutely right that today's processors are much more complex and having good tools (libraries, simulator or whatever) is important to getting a job done efficiently without needing to know all details under the bonnet. However, I find that a week to set up a clock is something definitely totally unacceptable in this age (or any age) - something is presently very wrong and needs addressing urgently...
Regards
Mark
