<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          STM32F4xx位帶操作

          作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          正點(diǎn)原子的例程里面有關(guān)這方面的講解是關(guān)于STM32F10X系列的。對(duì)于比較新的STM32F40x系列,位帶操作實(shí)現(xiàn)的方法其實(shí)差不多,只是地址發(fā)生了改變而已。

          本文引用地址:http://www.ex-cimer.com/article/201611/320513.htm

          1. #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr
          2. &0xFFFFF)<<5)+(bitnum<<2))
          3. #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
          4. #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
          5. //F4XXIO 口地址映射
          6. #define GPIOA_ODR_Addr (GPIOA_BASE+20) //0x40020014
          7. #define GPIOB_ODR_Addr (GPIOB_BASE+20) //0x40020414
          8. #define GPIOC_ODR_Addr (GPIOC_BASE+20) //0x40020814
          9. #define GPIOD_ODR_Addr (GPIOD_BASE+20) //0x40020C14
          10. #define GPIOE_ODR_Addr (GPIOE_BASE+20) //0x40021014
          11. #define GPIOF_ODR_Addr (GPIOF_BASE+20) //0x40021414
          12. #define GPIOG_ODR_Addr (GPIOG_BASE+20) //0x40021814
          13. #define GPIOH_ODR_Addr (GPIOH_BASE+20) //0x40021C14
          14. #define GPIOI_ODR_Addr (GPIOI_BASE+20) //0x40022014
          15. #define GPIOA_IDR_Addr (GPIOA_BASE+16) //0x40020010
          16. #define GPIOB_IDR_Addr (GPIOB_BASE+16) //0x40020410
          17. #define GPIOC_IDR_Addr (GPIOC_BASE+16) //0x40020810
          18. #define GPIOD_IDR_Addr (GPIOD_BASE+16) //0x40020C10
          19. #define GPIOE_IDR_Addr (GPIOE_BASE+16) //0x40021010
          20. #define GPIOF_IDR_Addr (GPIOF_BASE+16) //0x40021410
          21. #define GPIOG_IDR_Addr (GPIOG_BASE+16) //0x40021810
          22. #define GPIOH_IDR_Addr (GPIOF_BASE+16) //0x40021C10
          23. #define GPIOI_IDR_Addr (GPIOG_BASE+16) //0x40022010
          24. //F4XXIO 口操作,只對(duì)單一的IO 口,n 的值范圍[0-15]
          25. #define GPIOAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //GPIOA 某一位輸出
          26. #define GPIOAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //GPIOA 某一位輸入
          27. #define GPIOBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //GPIOB 某一位輸出
          28. #define GPIOBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //GPIOB 某一位輸入
          29. #define GPIOCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //GPIOC 某一位輸出
          30. #define GPIOCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //GPIOC 某一位輸入
          31. #define GPIODout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //GPIOD 某一位輸出
          32. #define GPIODin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //GPIOD 某一位輸入
          33. #define GPIOEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //GPIOE 某一位輸出
          34. #define GPIOEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //GPIOE 某一位輸入
          35. #define GPIOFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //GPIOF 某一位輸出
          36. #define GPIOFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //GPIOF 某一位輸入
          37. #define GPIOGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //GPIOG 某一位輸出
          38. #define GPIOGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //GPIOG 某一位輸入
          39. #define GPIOHout(n) BIT_ADDR(GPIOH_ODR_Addr,n) //GPIOH 某一位輸出
          40. #define GPIOHin(n) BIT_ADDR(GPIOH_IDR_Addr,n) //GPIOH 某一位輸入
          41. #define GPIOIout(n) BIT_ADDR(GPIOI_ODR_Addr,n) //GPIOI 某一位輸出
          42. #define GPIOIin(n) BIT_ADDR(GPIOI_IDR_Addr,n) //GPIOI 某一位輸入

          這樣一來就可以實(shí)現(xiàn)位帶操作。

          例如這樣:GPIOAout(0) = 0;

          就完成了PA0端口輸出低電平了。有時(shí)用的時(shí)候會(huì)很方便。



          關(guān)鍵詞: STM32F4xx位帶操

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();