diff --git a/stm32f3-discovery/Device/ldscripts/stm32f3.ld b/stm32f3-discovery/Device/ldscripts/stm32f3.ld index 964a69e..f15a3db 100644 --- a/stm32f3-discovery/Device/ldscripts/stm32f3.ld +++ b/stm32f3-discovery/Device/ldscripts/stm32f3.ld @@ -14,3 +14,5 @@ INCLUDE "stm32f3discovery_def.ld" /* include the sections management sub-script for FLASH mode */ INCLUDE "sections_flash.ld" +jhc_phys_brrPtr = 0x48001028; +jhc_phys_bsrrPtr = 0x48001018; diff --git a/stm32f3-discovery/hs_src/Main.hs b/stm32f3-discovery/hs_src/Main.hs index 1b4e5ac..441885c 100644 --- a/stm32f3-discovery/hs_src/Main.hs +++ b/stm32f3-discovery/hs_src/Main.hs @@ -5,6 +5,8 @@ import Foreign.Ptr import Foreign.Storable foreign import ccall "c_extern.h Delay" c_delay :: Word32 -> IO () +foreign import ccall "&jhc_phys_brrPtr" c_jhc_phys_brrPtr :: Ptr Word16 +foreign import ccall "&jhc_phys_bsrrPtr" c_jhc_phys_bsrrPtr :: Ptr Word16 gpioPin8, gpioPin9, gpioPin10, gpioPin11, gpioPin12, gpioPin13, gpioPin14, gpioPin15, led3, led4, led5, led6, led7, led8, led9, led10 :: Word16 gpioPin8 = 0x0100 @@ -25,8 +27,8 @@ led9 = gpioPin12 led10 = gpioPin13 brrPtr, bsrrPtr :: Ptr Word16 -brrPtr = nullPtr `plusPtr` 0x48001028 -bsrrPtr = nullPtr `plusPtr` 0x48001018 +brrPtr = c_jhc_phys_brrPtr +bsrrPtr = c_jhc_phys_bsrrPtr ledOff, ledOn :: Word16 -> IO () ledOff = poke brrPtr diff --git a/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h b/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h index 2ea1646..28403f8 100644 --- a/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h +++ b/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h @@ -65,3 +65,6 @@ extern const void * const nh_stuff[]; #include "rts/gc.h" #include "rts/jhc_rts.h" #include "lib/lib_cbits.h" + +extern volatile void jhc_phys_brrPtr; +extern volatile void jhc_phys_bsrrPtr;