查看: 2673|回复: 0

一切从点灯开始

[复制链接]

该用户从未签到

发表于 2017-5-12 13:57:25 | 显示全部楼层 |阅读模式
分享到:
首先给IAR安装F450的支持文件。最近安装了IAR8,界面比之前的清爽多了。

F450基本的芯片结构和F103还是很像的,就是外设库的风格简直不像是出自同一家公司



下面先来点灯
  1. #define BITMEM_BASE       0x20000000UL
  2. #define BITBAND_BASE      0x22000000UL
  3. #define BITPHMEM_BASE     0x40000000UL
  4. #define BITPHBAND_BASE    0x42000000UL

  5. #define MEM32(addr)       (*(uint32_t *)(uint32_t)(addr))

  6. #define AliasAddr(addr,bitnum) (BITBAND_BASE + (addr-BITMEM_BASE)*32+ bitnum*4)
  7. #define PhAliasAddr(addr,bitnum) (BITPHBAND_BASE + (addr-BITPHMEM_BASE)*32+ bitnum*4)


  8. #define PAOout(n)  MEM32(PhAliasAddr(GPIOA+0x14,n))  //Output
  9. #define PAIn(n)    MEM32(PhAliasAddr(GPIOA+0x10,n)   //Input

  10. #define PBOut(n)   MEM32(PhAliasAddr(GPIOB+0x14,n))  //Output
  11. #define PBIn(n)    MEM32(PhAliasAddr(GPIOB+0x10,n)   //Input

  12. #define PCOut(n)   MEM32(PhAliasAddr(GPIOC+0x14,n))  //Output
  13. #define PCIn(n)    MEM32(PhAliasAddr(GPIOC+0x10,n)   //Input

  14. #define PDOut(n)   MEM32(PhAliasAddr(GPIOD+0x14,n))  //Output
  15. #define PDIn(n)    MEM32(PhAliasAddr(GPIOD+0x10,n)   //Input

  16. #define PEOut(n)   MEM32(PhAliasAddr(GPIOE+0x14,n))  //Output
  17. #define PEIn(n)    MEM32(PhAliasAddr(GPIOE+0x10,n)   //Input

  18. #define PFOut(n)   MEM32(PhAliasAddr(GPIOF+0x14,n))  //Output
  19. #define PFIn(n)    MEM32(PhAliasAddr(GPIOF+0x10,n)   //Input

  20. #define PGOut(n)   MEM32(PhAliasAddr(GPIOG+0x14,n))  //Output
  21. #define PGIn(n)    MEM32(PhAliasAddr(GPIOG+0x10,n)   //Input


  22. #define Led1()                           PBOut(4)
  23. #define Led2()                           PBOut(3)
  24. #define Led3()                           PDOut(7)

  25. #define KeyB2St()                        PAIn(0)
  26. #define KeyB3St()                        PEIn(0)
  27. #define KeyB4St()                        PEIn(1)

  28. /*****************************************************************************//*!
  29. * @brief           port init.
  30. *               
  31. * @param   none
  32. *
  33. * @return  none
  34. *
  35. * @ Pass/ Fail criteria: none
  36. *****************************************************************************/
  37. void PortInit()
  38. {
  39.     rcu_periph_clock_enable(RCU_GPIOA);
  40.     rcu_periph_reset_enable(RCU_GPIOARST);
  41.     rcu_periph_reset_disable(RCU_GPIOARST);
  42.    
  43.     rcu_periph_clock_enable(RCU_GPIOB);
  44.     rcu_periph_reset_enable(RCU_GPIOBRST);
  45.     rcu_periph_reset_disable(RCU_GPIOBRST);
  46.    
  47.     rcu_periph_clock_enable(RCU_GPIOC);
  48.     rcu_periph_reset_enable(RCU_GPIOCRST);
  49.     rcu_periph_reset_disable(RCU_GPIOCRST);
  50.    
  51.     rcu_periph_clock_enable(RCU_GPIOD);
  52.     rcu_periph_reset_enable(RCU_GPIODRST);
  53.     rcu_periph_reset_disable(RCU_GPIODRST);
  54.    
  55.     rcu_periph_clock_enable(RCU_GPIOE);
  56.     rcu_periph_reset_enable(RCU_GPIOERST);
  57.     rcu_periph_reset_disable(RCU_GPIOERST);
  58.    
  59.     rcu_periph_clock_enable(RCU_GPIOF);
  60.     rcu_periph_reset_enable(RCU_GPIOFRST);
  61.     rcu_periph_reset_disable(RCU_GPIOFRST);
  62.    
  63.     rcu_periph_clock_enable(RCU_GPIOG);
  64.     rcu_periph_reset_enable(RCU_GPIOGRST);
  65.     rcu_periph_reset_disable(RCU_GPIOGRST);
  66.    
  67.     rcu_periph_clock_enable(RCU_GPIOH);
  68.     rcu_periph_reset_enable(RCU_GPIOHRST);
  69.     rcu_periph_reset_disable(RCU_GPIOHRST);
  70.    
  71.     rcu_periph_clock_enable(RCU_GPIOI);
  72.     rcu_periph_reset_enable(RCU_GPIOIRST);
  73.     rcu_periph_reset_disable(RCU_GPIOIRST);
  74.    
  75.     //LED
  76.     gpio_mode_set(GPIOB,GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_3 | GPIO_PIN_4);
  77.     gpio_output_options_set(GPIOB,GPIO_OTYPE_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_3 | GPIO_PIN_4);
  78.     //LED
  79.     gpio_mode_set(GPIOD,GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_7);
  80.     gpio_output_options_set(GPIOD,GPIO_OTYPE_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_7);
  81.     //KEY
  82.     gpio_mode_set(GPIOA,GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);
  83.     gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_0);
  84.     gpio_mode_set(GPIOE,GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0 | GPIO_PIN_1);
  85.     gpio_output_options_set(GPIOE,GPIO_OTYPE_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_0 | GPIO_PIN_1);

  86. }

  87. //点灯任务
  88.         if(bPulse_1s){
  89.             TimeRun();
  90.             Led1() = !Led1();
  91.         }
  92.         
  93.         if(bPulse_250ms){
  94.             Led2() = !Led2();
  95.         }
  96.         
  97.         if(bPulse_125ms){
  98.             if( Led1())
  99.                 Led3() = !Led3();
  100.         }
复制代码

F450IAR

F450IAR

IarCof450

IarCof450
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条



手机版|小黑屋|与非网

GMT+8, 2024-5-20 06:17 , Processed in 0.116753 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.