ARMwizard is an freeware application created to make the setting of the supported microcontroller peripheral easier through the use of a graphical interface.
The application is windows executable that can work in any windows version and is also fully functional in LINUX using WINE.
The currently version supports the LPC21xx,23xx,24xx,175x/6x,177x/8x.
LPC13xx and LPC11xx will be added in future versions.
The application can currently set the following aspects:
• GPIO, select input/output direction or any alternative pin function using a convenient graphical interface. Select to enable the pull-up/down resistor/repeater for mcu that support this function (23xx, 24xx, 17xx), also configure the open drain mode for selected pins.
A quick selector has all the functions in groups for faster access.
• Interrupts, select from a list any of the available interrupt sources and add them to the selected interrupt vector, the interrupt functions will be created automatically.
• External Interrupts , set the external interrupt options using combo boxes. A GPIO interrupt mode selector has also been added to enable interrupt for different edges (23xx, 24xx, 17xx)
• A/D converter, set any aspect of the ADC (mode, channels, interrupts etc.) with explanation for every setting and see the calculated clock and sample rate without need for calculations.
You can set the ADC clock divider by target frequency or sample rate.
• Timers , set any aspect of 16/32 bit timers (mode, MAT, CAP, interrupts etc.) with explanation for every setting and automatic clock calculation. You can also set the prescaler value by target frequency or period.
• PWM , set any aspect of the pulse width modulation (mode, MAT, CAP, interrupts etc.) with explanation for every setting and automatic clock calculation and PWM frequency. The PWMtimer prescaler and PWM frequency (MR0) can be set by target frequency or period
• SPI/SSP , set any aspect of the SPI and SSP peripherals with explanation for every setting and automatic frequency calculation
The application generates the initialization code with the selected settings, fully commented and including register values and interrupt functions, you just have to copy the code in a new project to have a starting point in a few minutes, this should make that development of applications much easier and faster.
The settings can also be saved and then be loaded in a new session to save time when reusing the same configuration.
I will keep you posted about update releases in this blog.
New in version 2.2.0
• Fixed: The GPDMA power control bit (PCONP) was not set to turn on the peripheral in LPC23xx/24xx/17xx
• Fixed: The IOCON, GPIO, GPIO interrupts power control bit (PCONP) was not set to turn on the peripheral in LPC17xx
• Fixed: The ADC clocks comment for each conversion in cortex MCU was always 60 instead of 65 or 31 in 17xx (calculation was correct)
• Fixed: The ADC calculate from samples/sec option didn't give correct results when a bit accuracy lower that 10bit/11clk was selected.
• Fixed: Some Processor Exception interrupt handler names in LPC17xx were not correct (NonMaskableInt,MemoryManagement,SVCall,DebugMonitor).
• Fixed: Changed several register names in LPc177x/8x models to match the names used in the latest CMSIS file (2011-03-03) included in Uvision v4.5
*******************************************************************
* OLD NAME * NEW NAME *
*******************************************************************
* KFLASH_IRQn * EEPROM_IRQn *
* KFLASH_IRQHandler * EEPROM_IRQHandler *
* LPC_IOCON->Px_00...Px_09 * LPC_IOCON->Px_0...Px_9 *
* LPC_USB->USBDevIntClr * LPC_USB->DevIntClr *
* LPC_USB->USBEpIntClr * LPC_USB->EpIntClr *
* LPC_USB->USBDMARClr * LPC_USB->DMARClr *
* LPC_USB->USBEoTIntClr * LPC_USB->EoTIntClr *
* LPC_USB->LPC_USB->USBNDDRIntClr * LPC_USB->NDDRIntClr *
* LPC_USB->USBSysErrIntClr * LPC_USB->SysErrIntClr *
* LPC_USB->OTGIntClr * LPC_USB->IntClr *
* LPC_EEPROM->INTSTATCLR * LPC_EEPROM->INT_CLR_STATUS *
*******************************************************************• Added: Interrupt description for the interrupt selected in the drop down list (CORTEX mcu).
• Added: The application form can now be resized because there were some problems in W7 with fonts set to 125%
• Added: Replace name functionality, in order to make the generated code compatible with register name changes in the mcu headers
• Changed: All the interrupt clear values have been changed from absolute values to a (1UL shift left x) format for easier understanding of the cleared bit number.
Visit http://alexan.edaboard.eu
Best regards
Alex

Sorry for the late reply, I
Sorry for the late reply, I didn't get any notification for the post.
***QUOTE*** I liked the binary representation of each registers. Makes it easier to check with the UM!
Yes that is the point of having them, I even use the underscore to separate the bytes so that you can easily count a bit
PCONP uses this style LPC_SC->PCONP = (LPC_SC->PCONP & 0xEFEFF7DE) | (1UL<<15);
It only sets one bit so there is no need to see individual bits.
Depending on the mcu model I AND the register content with a value (like 0xEFEFF7DE above) with 0 in all reserved bits to make sure that they are set to 0 before assigning them back to the register.
***QUOTE*** In the UI that shows CLK value next to CLKDIV, the ADCClk value is displayed only when I hover over the text.
***QUOTE*** It would be more intuitive to see the ADCClk value right next to the CLKDIV value instead of the CLK value
The frequency next to the clkdiv is the actual ADC clock after the division, not the PCLK shown in the top upper corner or the sample rate in the right corner of the ADC frame.
What is shown when you hover over the adc clock is a hint that shows the max clock freq allowed.
The ADC freq. becomes red if you go over the allowed frequency anyway so the hint isn't important.
***QUOTE***Also I observed that the ADCClk value displays the default ADCCLK max as 14 MHz for 1769.
You are right, I will correct it.
***QUOTE*** • In the results tab, the “Use replace table” and “view table” buttons need mouse over descriptions so that it makes it easier to understand its functions
Maybe It could be setup better.
I have included a help button but I will try to add hints too as you suggest although sometimes they are annoying.
***QUOTE*** When I open the “about” tab, I need to click on it again to close the tab, could you make it more intuitive to make it easier?
I didn't expect anyone to have a problem with that... I will try to improve it.
Thank you for your suggestions and corrections
Alex
Hi Alexan, I tested the wiard
Hi Alexan,
I tested the wiard and here are few observations:
• I used the wizard to generate code and verified with the UM for correctness for LPC1769 , LPC2148,LPC2378. No issues here.
• I liked the binary representation of each registers. Makes it easier to check with the UM!
o Although some registers (like PCONP in LPC1769 ) didn't have that.
• I configured the devices for ADC
o No issues in configuration
o In the UI that shows CLK value next to CLKDIV, the ADCClk value is displayed only when I hover over the text.
o It would be more intuitive to see the ADCClk value right next to the CLKDIV value instead of the CLK value
(since its already displayed at top right corner)
o Also I observed that the ADCClk value displays the default ADCCLK max as 14 MHz for 1769.
I guess it should read 13MHz as quoted in the UM. However, no issues in the configuration.
• In the results tab, the “Use replace table” and “view table” buttons need mouse over descriptions so that it makes it easier to understand its functions
• When I open the “about” tab, I need to click on it again to close the tab, could you make it more intuitive to make it easier?
Thanks,