This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

(STM32F100) System Viewer only shows some parts of the peripherals

Hello there.
Currently working on a Project around the STM32F100R6 Processor. I am using the newest (fully licenced) uVision MDK 4.22 and ST-Peripherals Library 3.5.0.

My problem is now that the System Viewer in Keils Debugger only shows me some parts of the actual peripherals the processor has. Most important to me would be to get a view of all the used timers, but the system viewer only gives me access to TIM2, TIM3 and TIM_G (TIM_G seems to represent TIM1 according to the address-values and memory map in the F100x datasheet).
Using the memory view to get the timer config and counter values extracted would be possible, but it's not really pratical to pull out all the addresses all the time. (The F100 value line devices have TIM1-3, TIM6-7 and TIM15-17 included according to the datasheet...)

As far as i can tell, the system-viewer pulls its information about the registers out of the SFR-Files found in the install-directory of Keil. By choosing the processor-type in the project-options you get an entry in the .uvproj xml-file that points to that particular file for your processor. (Something like <SFDFile>SFD\ST\STM32F10xx\STM32F10xx4.sfr</SFDFile> in my case.)

Now, my question is, can i trick my Keil-Tools to use another SFR that maybe has a bit more peripherals defined in it? (just by editing that line in the project file?) From what i can see STM32F10xx4.sfr is by far the smallest SFR file, so it seems like the other files in that same folder (Ending in B, G, and E) would be a much better choice as they probably have a lot more definitions in it. The memory map is the same for the entire F100xx family, so the information/addresses should actually be correct, with the only problem that i could see peripherals in the system viewer that my particular processor would not have in reality, right?
So, if this actually works, what else is the SFR-File used for? Is it involved in any other essential task, like during compiling/linking process, and could the wrong filename in the .uvproj lead to serious problems there?

The other way around would be to rewrite an SFR file that fits to the processor i am actually using. (I would take one of the bigger files and strip out the information about peripherals the 100x6 does not provide.) But when i look at the .SFR file with a normal txt-editor, i can't really make much sense of how its structure works, and uVision even refuses to display the files contents when opening. Maybe there is an editor out there that can help to visualize the SFR structure for easyer editing?

Parents
  • Hmmm... The lack of answers tells me that apparently noone has a solution for this problem.

    I have now used the workaround mentioned above by editing the uvproj-file and tell uVision to use STM32F10xxB.sfr definitions. Interesting to know about this trick is that uVision somehow noticed my manual changes. If i go to the project options now, there is a new field below the operating system drop down menu, where i can directly choose another sfr-file to be used... Pretty nice to have if you suffer from bad (incomplete) sfr-files.

    As of now, i did not have any problems with compiling and running my program, so it seems as if there is no real negative impact related to my changes. On the positive side, i do now have access to some more peripherals in the debug-view, and that really helped me to get all the peripherals initialized and set up as needed.

    It's just a bit sad that Keil does not deliver a better, more complete solution for the perpheral view. Even by using the most complete SFR i could find for the STM32F100-Family, there are still some peripherals you cant open/see. Is this the same for all the processors out there, or did i just pick the black sheep out of all the processor families Keil supports? I did quite some work before with the F103 and F107 family, but there i never used as much peripherals, or by chance, just the ones that that the peripheral viewer had defined.

    Anyway, i would still like to see a fix for the missing peripherals, or at least an editor/plugin/tool to adapt/expand the memory map in the SFR-files to whatever someone would want to see in his peripheral viewer.

    (Just want to point out that i kinda miss the old style peripheral view that we now only have for Core Peripherals (NVIC, SysTick,..)

Reply
  • Hmmm... The lack of answers tells me that apparently noone has a solution for this problem.

    I have now used the workaround mentioned above by editing the uvproj-file and tell uVision to use STM32F10xxB.sfr definitions. Interesting to know about this trick is that uVision somehow noticed my manual changes. If i go to the project options now, there is a new field below the operating system drop down menu, where i can directly choose another sfr-file to be used... Pretty nice to have if you suffer from bad (incomplete) sfr-files.

    As of now, i did not have any problems with compiling and running my program, so it seems as if there is no real negative impact related to my changes. On the positive side, i do now have access to some more peripherals in the debug-view, and that really helped me to get all the peripherals initialized and set up as needed.

    It's just a bit sad that Keil does not deliver a better, more complete solution for the perpheral view. Even by using the most complete SFR i could find for the STM32F100-Family, there are still some peripherals you cant open/see. Is this the same for all the processors out there, or did i just pick the black sheep out of all the processor families Keil supports? I did quite some work before with the F103 and F107 family, but there i never used as much peripherals, or by chance, just the ones that that the peripheral viewer had defined.

    Anyway, i would still like to see a fix for the missing peripherals, or at least an editor/plugin/tool to adapt/expand the memory map in the SFR-files to whatever someone would want to see in his peripheral viewer.

    (Just want to point out that i kinda miss the old style peripheral view that we now only have for Core Peripherals (NVIC, SysTick,..)

Children