Пт мар 23, 2012 00:41:12
Пт мар 23, 2012 06:43:02
Пт мар 23, 2012 08:00:41
Сб авг 04, 2012 15:55:15
#include <ST\iostm32f407VG.h> //Это недостающий заголовочник для IAR 6.30, который пришлось добавить самому.
#define COUNT 0x0001A0FF
//////////////////////////////////////////////////////////////////////////////
int main()
{
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //Enable GPIO A
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; //Enable GPIO D
//RCC->APB1RSTR |= RCC_AHB1RSTR_GPIOARST; //Reset GPIO A
//RCC->APB1RSTR |= RCC_AHB1RSTR_GPIODRST; //Reset GPIO D
GPIOD->MODER |= (GPIO_MODER_MODER15_0 |
GPIO_MODER_MODER14_0 |
GPIO_MODER_MODER13_0 |
GPIO_MODER_MODER12_0); // GPIO Mode Port Out
GPIOD->OTYPER = 0x00000000; //Out D type Push-Pull
GPIOD->OSPEEDR = 0x00000000; //Out Speed Low (2MHz)
GPIOD->PUPDR = 0x00000000; //Not Pull Up/Down
unsigned char a = 0;
while(1)
{
if((GPIOA->IDR) & (GPIO_IDR_IDR_0) == 1) //if PA0 is set to 1 (button pressed)
{
a = ~a;
while((GPIOA->IDR) & (GPIO_IDR_IDR_0) == 1) //if PA0 is set to 1 (button pressed)
{
asm("nop");
}
}
if(!a)
{
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_15;} //Set 1 to PD15
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_15;} //Set 0 to PD15
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_14;} //Set 1 to PD14
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_14;} //Set 0 to PD14
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_13;} //Set 1 to PD13
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_13;} //Set 0 to PD13
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_12;} //Set 1 to PD12
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_12;} //Set 0 to PD12
}
}
//return 0;
}
Сб авг 04, 2012 19:27:52
Пн авг 06, 2012 21:34:40
;;//EXTERN SystemInit
.....
.......
Reset_Handler
;;//LDR R0, = SystemInit
;;//BLX R0
........
......