Skip to content

Instantly share code, notes, and snippets.

@master-q
Created February 21, 2013 11:32
Show Gist options
  • Save master-q/5004134 to your computer and use it in GitHub Desktop.
Save master-q/5004134 to your computer and use it in GitHub Desktop.
このプログラムをjhcにかけると無限ループする気がする
import Data.Word
import Data.Bits
import Control.Monad
import Foreign.Ptr
import Foreign.Storable
foreign import ccall "c_extern.h Delay" c_delay :: Word32 -> IO ()
gpioPtr :: Ptr Word32
gpioPtr = odr
where periphBase = nullPtr `plusPtr` 0x40000000
arb2periphBase = periphBase `plusPtr` 0x10000
gpioaBase = arb2periphBase `plusPtr` 0x0800
odr = gpioaBase `plusPtr` 12
gpioOut :: Word32 -> IO ()
gpioOut v = do
poke gpioPtr v
c_delay 500000
main :: IO ()
main = mapM_ gpioOut $ cycle pat
where
o13 = (1 `shiftL` 13)
o15 = (1 `shiftL` 15)
pat = [o13, o13 .|. o15, o15, 0]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment