We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am newbie in arm programming. I am using teensy 3.2 which has MK20DX256 microcontroller chip .and led is connected to PTC5 of MC.
i have written this code to blink LED
The project builds without error but hex file does not blink led. i am using teensyloader to program the board with hex file
here is my code
////////////////////////////////////////////////////////////////////////////////////////////////
# include "MK20D7.h"void delay(unsigned int );
int main(void){ SystemCoreClockUpdate(); /* Get Core Clock Frequency */ SysTick_Config(SystemCoreClock/1000); /* Generate interrupt each 1 ms */
PORTC->PCR[5]= 256; //declared as GPIO PTC->PDDR=0x00000010; while(1) { PTC->PDOR=0x00000010; delay(500); PTC->PDOR=0x00000000; delay(500); } }
void delay(unsigned int ms){ unsigned int i,j;
for(i=0;i<ms;i++) for(j=0;j<20000;j++);
}
////////////////////////////
please help me in finding what is wrong with this code
blessed said:i am new to microcontrollers
Start here:
https://www2.keil.com/mdk5/learn
https://www.keil.com/books/
There are also example projects in the uVision documentation:
https://www.keil.com/support/man/docs/uv4/uv4_examples.htm
and, no doubt, the Teensy people and the chip manufacturer will have examples, tutorials, etc ...
blessed said:i have goog c++ knowledge
So you should understand that the compiler is entirely at liberty to optimise-away "useless" code - like this:
void delay(unsigned int ms) { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<20000;j++); }
Do you have a debugger - so that you can see what your code is actually doing ?
No i am using a simulator
But my code works now
# include "MK20D7.h" void delay(unsigned int); void delay(unsigned int ms) { volatile unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<2000;j++); } int main(void) { SIM->SCGC5 = (1UL << 11); /* Enable Clock to Port C */ PORTC->PCR[5] = (1UL << 8); /* Pin is GPIO */ PTC->PDDR = (1u<<5); while(1) { PTC->PSOR = (1u<<5); //Set PTC5 = 1, turns LED on delay(500); //Burn some time PTC->PCOR = (1u<<5); //Set PTC5 = 1, turns LED off delay(500); //Burn some time } }