22 * test spi functions
33 */
44
5+ #define ARDUINO_MAIN
56#include "Arduino.h"
67#include "wiring_private.h"
8+ #include "stm8s_it.h"
79
8- void pinMode1 (uint8_t pin , uint8_t mode )
10+ void pinMode_c (uint8_t pin , uint8_t mode )
911{
1012 uint8_t bit = digitalPinToBitMask (pin );
1113 uint8_t port = digitalPinToPort (pin );
@@ -266,7 +268,7 @@ uint8_t checkresult(uint8_t *adr, uint8_t *data)
266268}
267269
268270
269- void setup (void )
271+ void main (void )
270272{
271273 // expected result: xx xx 00 00 00
272274 pinMode_asm (PA1 ,INPUT );
@@ -293,7 +295,30 @@ void setup(void)
293295 checkresult (GPIOD_BaseAddress , "\x42\x02\x42" );
294296}
295297
298+ #include "stm8s_it.h"
296299
297- void loop (void )
298- {
299- }
300+ /*
301+ * empty default IRQ functions to make the linker happy if the
302+ * respective module is not to linked.
303+ */
304+
305+ void UART1_TX_IRQHandler (void ) __interrupt (ITC_IRQ_UART1_TX ){}
306+ void UART1_RX_IRQHandler (void ) __interrupt (ITC_IRQ_UART1_RX ){}
307+
308+ // define as __naked to avoid the "clr a/dix x,a" prolog
309+ #define IMPLEMENT_ISR (vect , interrupt ) \
310+ void vect(void) __interrupt((interrupt)>>8) __naked { \
311+ __asm__("iret"); \
312+ }
313+
314+ IMPLEMENT_ISR (EXTI_PORTA_IRQHandler , INT_PORTA ) /* EXTI PORTA */
315+ IMPLEMENT_ISR (EXTI_PORTB_IRQHandler , INT_PORTB ) /* EXTI PORTB */
316+ IMPLEMENT_ISR (EXTI_PORTC_IRQHandler , INT_PORTC ) /* EXTI PORTC */
317+ IMPLEMENT_ISR (EXTI_PORTD_IRQHandler , INT_PORTD ) /* EXTI PORTD */
318+ IMPLEMENT_ISR (EXTI_PORTE_IRQHandler , INT_PORTE ) /* EXTI PORTE */
319+ IMPLEMENT_ISR (TIM1_CAP_COM_IRQHandler , INT_TIM1_CAPCOM )
320+ //IMPLEMENT_ISR(TIM1_UPD_OVF_TRG_BRK_IRQHandler, INT_TIM1_OVF)
321+ //IMPLEMENT_ISR(TIM2_CAP_COM_IRQHandler, INT_TIM2_CAPCOM)
322+ //IMPLEMENT_ISR(TIM2_UPD_OVF_TRG_BRK_IRQHandler, INT_TIM2_OVF)
323+
324+ void TIM4_UPD_OVF_IRQHandler (void ) __interrupt (ITC_IRQ_TIM4_OVF ){}
0 commit comments