Цитата(KRS @ May 28 2009, 16:00)

Для кортекса обработчик - обычная С функция. Надо только указатель на нее в векторе прерывания разместиь
Здравствуйте.
Посмотрите пожалуйста для Таймера 1 будет работать прерывание по вектору TIM1_UP_IRQHandler.
Код
#pragma language=extended
#pragma segment="CSTACK"
void __iar_program_start( void );
#pragma location = ".intvec"
/* STM32F10x Vector Table entries */
const intvec_elem __vector_table[] =
{
{ .__ptr = __sfe( "CSTACK" ) }, //0
__iar_program_start, //1
0,//NMIException, //2
0,//HardFaultException, //3
0,//MemManageException, //4
0,//BusFaultException, //5
0,//UsageFaultException, //6
0, 0, 0, 0, /* Reserved */
0,//SVCHandler, //11
0,//DebugMonitor, //12
0, /* Reserved */
0,//PendSVC, //14
0,//SysTickHandler, //15
0,//WWDG_IRQHandler, //16
0,//PVD_IRQHandler, //17
0,//TAMPER_IRQHandler, //18
0,//RTC_IRQHandler, //19
0,//FLASH_IRQHandler, //20
0,//RCC_IRQHandler, //21
0,//EXTI0_IRQHandler, //22
0,//EXTI1_IRQHandler, //23
0,//EXTI2_IRQHandler, //24
0,//EXTI3_IRQHandler, //25
0,//EXTI4_IRQHandler, //26
0,//DMAChannel1_IRQHandler, //27
0,//DMAChannel2_IRQHandler, //28
0,//DMAChannel3_IRQHandler, //29
0,//DMAChannel4_IRQHandler, //30
0,//DMAChannel5_IRQHandler, //31
0,//DMAChannel6_IRQHandler, //32
0,//DMAChannel7_IRQHandler, //33
0,//ADC_IRQHandler, //34
0,//USB_HP_CAN_TX_IRQHandler, //35
0,//USB_LP_CAN_RX0_IRQHandler, //36
0,//CAN_RX1_IRQHandler, //37
0,//CAN_SCE_IRQHandler, //38
0,//EXTI9_5_IRQHandler, //39
0,//TIM1_BRK_IRQHandler, //40
TIM1_UP_IRQHandler, //41
0,//TIM1_TRG_COM_IRQHandler, //42
0,//TIM1_CC_IRQHandler, //43
0,//TIM2_IRQHandler, //44
0,//TIM3_IRQHandler, //45
0,//TIM4_IRQHandler, //46
0,//I2C1_EV_IRQHandler, //47
0,//I2C1_ER_IRQHandler, //48
0,//I2C2_EV_IRQHandler, //49
0,//I2C2_ER_IRQHandler, //50
0,//SPI1_IRQHandler, //51
0,//SPI2_IRQHandler, //52
0,//USART1_IRQHandler, //53
0,//USART2_IRQHandler, //54
0,//USART3_IRQHandler, //55
0,//EXTI15_10_IRQHandler, //56
0,//RTCAlarm_IRQHandler, //57
0,//USBWakeUp_IRQHandler, //58
};
А
Код
void __iar_program_start( void );
для чего или она тут не при чем?
Кто-нибудь может скинуть пример работы программы на STM32 с библиотекой от IAR.
Мне нужно запустить процессор, инициализировать прерывания, таймер, АЦП и UART.
С процессором вроде как разобрался, вот что получилось:
Код
void SetupClock(void)
{
// 1. включаем внутренний генератор
RCC_CR_bit.HSION = 1; // включаем внутренний генератор
while(RCC_CR_bit.HSIRDY == 0){} // ожидаем потверждения включения внутреннего генератора
// 2. %%%%%%%%%%%% отключаем SYSCLK %%%%%%%%%%%%%%%%%%%%%%%%%%
RCC_CFGR_bit.SW = 0; // системный clock не выбран
while(RCC_CFGR_bit.SWS != 3){} // ожидаем потверждения выключения SYSCLK
// 3. отключаем внешний генератор
RCC_CR_bit.HSEON = 0; // отключаем внешний генератор
RCC_CR_bit.HSEBYP = 0; // не замыкаем внешний генратор с SYSCLK
while(RCC_CR_bit.HSERDY == 0){} // ожидаем потверждения выключения внешнего генератора
// 4. ******ВЫКЛЮЧАЕМ PLL********
RCC_CR_bit.PLLON = 0; // выключаем PLL
while(RCC_CR_bit.PLLRDY == 0){} // ожидаем потверждения выключения PLL
// 5. настаеваем SYSCLK
RCC_CFGR_bit.PLLSRC = 0; // HSI (внутренний генератор) выбирается как вход PLL, при этом делится на 2
RCC_CFGR_bit.PLLXTPRE = 0; // HSE (внешний генератор) не делится на 2 во вход в PLL
RCC_CFGR_bit.PLLMUL = 0xA; // установка умнажителя на 12 (8 МГц -> /2 -> 4 МГц -> *12 -> 48 МГц)
// 6. ********ВКЛЮЧАЕМ PLL*******
RCC_CR_bit.PLLON = 1; // включаем PLL
while(RCC_CR_bit.PLLRDY == 0){} // ожидаем потверждения включения PLL
// 7. настраемаем AHB предделитель
RCC_CFGR_bit.HPRE = 0x0; // преддилитель AHB = 1
// 8. настраемаем APB1 предделитель
RCC_CFGR_bit.PPRE1 = 0x4; // преддилитель APB1 = 2
// 9. настраемаем APB2 предделитель
RCC_CFGR_bit.PPRE2 = 0x0; // преддилитель APB2 = 1
RCC_CR_bit.CSSON = 0; // отключаем внешний детектор clock
// 12. %%%%%%%%%%%%%%%%%%% включаем SYSCLK %%%%%%%%%%%%%%%%%%%%%
RCC_CFGR_bit.SW = 2; // PLL как системный clock
while(RCC_CFGR_bit.SWS != 2){} // ожидаем потверждения включения SYSCLK
Скачал примеры, там самописные билиотеки (не привязанные к IAR), такие замудренные, разбираться замучаешься.
Может кто чем поможет?
Заранее спасибо!