Пн апр 10, 2017 17:29:25
RusikOk писал(а):тактирование от внутреннего источника?
#include "stm8s.h"
#define LED_GPIO_ODR GPIOA->ODR
#define LED ((uint8_t)(1<<3))
__IO uint16_t ms = 0;
INTERRUPT_HANDLER(TIM2_UPD_OVF_IRQHandler, 13) // Прерывание таймера
{
TIM2->SR1 &= ~TIM2_SR1_UIF; // Очистка флага прерывания по обновлению
if(ms != 0) ms--;
}
void delay_ms(uint16_t ms16_t) // Задержка мс
{
ms = ms16_t;
while(ms);
}
void main( void )
{
CLK->CKDIVR = 0; //Делитель частоты = 1
GPIOA->DDR |= (uint8_t) (1<<3); // Ножка конфигурируется на вывод
GPIOA->CR1 |= (uint8_t) (1<<3); //Выход типа Push-pull
//GPIOA->CR2 |= (uint8_t) (1<<3); // Скорость переключения - до 10 МГц.
TIM2->SR1 &= ~TIM2_SR1_UIF; // Очистка флага прерывания по обновлению
TIM2->PSCR = 0x06; // //Предделитель на 2^6=64 16000000/64 = 250000 Hz
TIM2->ARRH = 0; ///Значение перезагрузки 250000/250 = 1000 Гц
TIM2->ARRL = 250;
TIM2->IER |= TIM2_IER_UIE; // Прерывание по обновлению счетного регистра азрешено
TIM2->CR1 |= TIM2_CR1_URS | TIM2_CR1_CEN ; // Прерывание по переполнению разрешено и таймер запущен
asm("rim");
while(1)
{
LED_GPIO_ODR |= LED;
delay_ms(500);
LED_GPIO_ODR &= ~LED;
delay_ms(500);
}
}
Вт апр 11, 2017 21:46:46
огромное спасибо! выяснил в чем проблема. STVP после программирования не переводил контроллер в нормальный рабочий режимoleg110592 писал(а):проверил на живом светодиоде - блинкает
Вт апр 25, 2017 19:11:46
Чт июн 22, 2017 00:41:39
Пт июн 23, 2017 15:38:08
кстати да, в недавнее время его неплохо обработали напильником.
Пт июн 23, 2017 18:06:01
Пт июн 23, 2017 18:12:20
тут пример прерываний не в main
Чем хуже бесплатный ИАР
может makefile?
извиняюсь - stm8 не по теме, может перенесем обсуждение в соответствующую ветку?
Сб июн 24, 2017 00:04:33
If you have multiple source files in your project, interrupt service routines can be present in any of them, but a prototype of the isr MUST be present or included in the file that contains the function main.
Сб июн 24, 2017 07:31:33
Сб июн 24, 2017 12:45:30
Надеюсь. Я так тестовую прогу так и не делал. Надо заставить себя. Проверить то просто. Установить для основного тела программы высший приоритет (т.е. запретить прерывания), дать событие, и разрешить прерывание.shads писал(а):Это вряд ли...
Пн июн 26, 2017 10:17:50
Пн июн 26, 2017 10:51:10
Пн июн 26, 2017 11:20:56
Ср июн 28, 2017 21:39:39
Ср июн 28, 2017 22:05:05
EV5:SB=1, cleared by reading SR1 register followed by writing DR register with Address.
Чт июн 29, 2017 00:00:54
Вт июл 04, 2017 15:21:10
if( ++data->byte_index >= data->bytes ) data->state = encoding_state_tx_busy_lb;
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
Вт июл 04, 2017 16:56:24
if( ++(data->byte_index) >= data->bytes ) data->state = encoding_state_tx_busy_lb;
Вт июл 04, 2017 17:49:07
Вт июл 04, 2017 17:58:44
typedef struct {
char byte_index;
char bytes;
char state;
} data_t;
data_t *data;
data=0;
if( ++data->byte_index >= data->bytes ) data->state = 1;