Добрый день! Написал код по которому мигает светодиод от таймера, так вот от таймера 1 он работает, все тоже только с таймером 2 и 3 уже не работает, не могу понять почему, вот сам код:
#include "stm8s.h"
@far @interrupt void tim3Update (void)
{
//TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
TIM3_ClearITPendingBit(TIM3_IT_UPDATE);
GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
}
main()
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1|CLK_PRESCALER_CPUDIV1);
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);//
//TIM1_TimeBaseInit(16000,TIM1_COUNTERMODE_UP,1000,0);//ин-ция таймера, предделитель 16000, значение перепол. таймера 1000 (1с)
TIM3_TimeBaseInit(16000,1000);
//TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);//ин-ция прерывания по событию update
TIM3_ITConfig(TIM3_IT_UPDATE, ENABLE);
//TIM1_Cmd(ENABLE);//запуск таймера
TIM3_Cmd(ENABLE);
enableInterrupts();//разрешение прерываний
while (1)
{
}
}
Вот тут прописал вектор прерывания
struct interrupt_vector const _vectab[] = {
{0x82, (interrupt_handler_t)_stext}, /* reset */
{0x82, NonHandledInterrupt}, /* trap */
{0x82, NonHandledInterrupt}, /* irq0 */
...................................................................
{0x82, NonHandledInterrupt}, /* irq10 */
{0x82, tim3Update}, /* irq11 */ Это для таймера 1
{0x82, NonHandledInterrupt}, /* irq12 */
{0x82, NonHandledInterrupt}, /* irq13 */
{0x82, NonHandledInterrupt}, /* irq14 */
{0x82, tim3Update}, /* irq15 */ Это для таймера 2
Это таблица сравнения таймеров
Вот таблица векторов прерываний