Уж лучше дебажить.balmer писал(а): нормально ли получилось дебагировать.
А то созвучно - ононировать получилось...
Уж лучше дебажить.balmer писал(а): нормально ли получилось дебагировать.
Лучше и подробнее статьи я не встречалdosikus писал(а):http://kazus.ru/forums/showthread.php?t=105029
Спсdrakon писал(а):P.S. С Днем программиста!
Код: Выделить всё
...
Info : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
Error: stm32f1x.cpu -- clearing lockup after double fault
Polling target stm32f1x.cpu failed, GDB will be halted. Polling again in 100ms
Polling target stm32f1x.cpu succeeded again
Одно другому не противоречит CMSIS - это startup + хидер с описанием всех портов и констант к ним.Darth Cuauhtemoc писал(а): Вопрос такой - с использованием чего писать? CMSIS или StdPeriphLib? Что более высокоуровневое, на чем проще?
В частности, задействовать придется SPI, и кроме этого, IO порты.
А есть внятные и хорошие доки? Можно на английском. Лучше книгу. А то хэлп, что в архиве от ST, что-то не вкурил я.balmer писал(а):StdPeriphLib - это уже чутка более высокоуровневые либы. Лично мне они нравятся.
CHM из архива каждой либы очень даже вменяемый. Может стоит "затянуться" еще раз?Darth Cuauhtemoc писал(а):А есть внятные и хорошие доки? Можно на английском. Лучше книгу. А то хэлп, что в архиве от ST, что-то не вкурил я.balmer писал(а):StdPeriphLib - это уже чутка более высокоуровневые либы. Лично мне они нравятся.
Код: Выделить всё
#define assert_param(expr) ((void)0)
Код: Выделить всё
void Init_Timer1(void){ ////TIM1_CH2
//TIM1_CH2 - PA9 выход двухтактный, альтернативная функция, High speed
GPIOA->MODER |= GPIO_MODER_MODER9_1; //Alternate function mode
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_9; //Output push-pull
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; //High speed
GPIOA->AFR[1] |= AF2<<(4*(9-8)); //AF2 для пина 9
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; //Включили тактирование Timer1
TIM1->PSC = 2000 - 1; //претделитель на 1
TIM1->CCER |= TIM_CCER_CC2E; //Разрешаем таймеру использовать CH2 для ШИМа
TIM1->CCMR1 |= (TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_0); //TIM1_CH2 - при сравнении состояние пина инвертируется
//TIM1->CCMR1 |= (TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1); //Прямой ШИМ
TIM1->BDTR |= TIM_BDTR_MOE; //Разрешаем вывод сигнала на pin OC
TIM1->ARR = 100; // таймер перезагружается при...
TIM1->CCR2 = 50; // Compare value
TIM1->CR1 |= TIM_CR1_CEN; //Запускаем таймер!
}BorisSPB прав. Если заглянуть не в хелп, а в конфигурационные файлы библиотек, то можно увидетьDarth Cuauhtemoc писал(а):Это есть, только не USE_PERIPH_DRIVER, а USE_PERIPH_LIBRARY (как в хэлпе было сказано, который с либой шел)
Код: Выделить всё
GPIO_InitStructure.GPIO_Pin = LCD_DC_PIN | LCD_RES_PIN | SPI_LCD_PIN_SCK | SPI_LCD_PIN_MOSI | SPI_LCD_PIN_SS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// Configure SPI for LCD
GPIO_InitStructure.GPIO_Pin = SPI_LCD_PIN_SCK | SPI_LCD_PIN_MOSI;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
Код: Выделить всё
SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;
Код: Выделить всё
void Nokia3310_send(uint8_t data)
{
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
GPIO_ResetBits(GPIOA, SPI_LCD_PIN_SS);
SPI_I2S_SendData(SPI1, data);
GPIO_SetBits(GPIOA, SPI_LCD_PIN_SS);
return;
}
Лень всему виною... налицо нежелание разбираться... а также архитрагическое непонимание принципа работы SPI...Darth Cuauhtemoc писал(а):Передача по SPI запаздывает относительно строба. Налицо буферизация, аппаратная или в либе - не знаю... копать исходники нет сил уже... как победить... невозможно работать же... держать линию постоянно на низком уровне не хотелось бы.
Согласен, сам дурак...HHIMERA писал(а): Окончание передачи байта кто за вас контролировать будет???![]()
Та да... какая-то нездоровая фигня получается...dosikus писал(а):HHIMERA , похоже созрели очередные классические грабли .
Ну как RA4 у пик ...