Купил себе STM32VLDISCOVERY и решил начать с ней играться.
Но почему-то, когда я начинаю тактировать 2 порт, всё рушиться.
Написал простой код по зажиганию светодиода, при нажатии кнопки, он компилится, заливаю, но ничего не происходит...
Решил сделать дебаг, все падает на строчке:
Код: Выделить всё
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;Вот полный код прошивки написан в CoIDE:
Спойлер
Код: Выделить всё
#include <stm32f10x_rcc.h>
#include <stm32f10x_gpio.h>
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
void Delay(volatile uint32_t nCount);
GPIO_InitTypeDef GPIO_InitStructure;
void init()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; // использовать выводы PC8 и PC9
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // на выход
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //задаем номер вывода, если кнопка подключена, например к 6 порту, то пишем GPIO_Pin_6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //порт будет работать как цифровой вход с подтяжкой к земле
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
volatile int main(void)
{
init();
while(1)
{
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET); // включить зеленый светодиод, подключенный к Led PC9
if(GPIO_ReadInputDataBit (GPIOA, GPIO_Pin_0) != 0 )// Если нажата кнопка PA0
{
GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_SET);// погасить зеленый светодиод, подключенный к Led PC9
}
else
{
GPIO_ResetBits(GPIOC, GPIO_Pin_8); // погасить синий светодиод, подключенный к Led PC8
}
Delay(2000000);
}
}
//-------
void Delay(volatile uint32_t nCount)
{
for (; nCount > 0; nCount--);
}



