搜索
bottom↓
回复: 7

问一下KL15系列和KE02系列能用Keil MDK+库函数 编程吗?(已解决)

[复制链接]

出0入0汤圆

发表于 2013-10-30 13:46:28 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-1-27 16:39 编辑

RT, 如果支持的话哪位能传个跑马灯之类的工程看看啊?想熟悉一下开发流程、程序结构和库函数,谢谢。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-10-30 13:50:54 | 显示全部楼层
官方库,还没发布。 我晚上搭一个环境贴上来。 手头只有 KE04的 FRDM板子

出0入0汤圆

 楼主| 发表于 2013-10-30 13:57:27 | 显示全部楼层
yandld11 发表于 2013-10-30 13:50
官方库,还没发布。 我晚上搭一个环境贴上来。 手头只有 KE04的 FRDM板子

谢谢,请问是用MDK开发的吗?目前都用寄存器操作吗?

出0入0汤圆

发表于 2013-10-30 14:02:43 | 显示全部楼层
本帖最后由 yandld11 于 2013-10-30 14:04 编辑

用什么IDE都无所谓的,都是 code.  直接操作寄存器就好。我可能比较忙,不一定赶出来

我给你贴下Lib的代码吧:gpio.c
  1. /******************************************************************************

  2. *
  3. ******************************************************************************/
  4. #include "gpio.h"

  5. /******************************************************************************
  6. * Local variables
  7. ******************************************************************************/


  8. /******************************************************************************
  9. * Local function prototypes
  10. ******************************************************************************/

  11. /******************************************************************************
  12. * Local functions
  13. *****************************************************************************/

  14. /******************************************************************************
  15. * Global functions
  16. ******************************************************************************/

  17. /******************************************************************************
  18. * define GPIO APIs
  19. *
  20. *//*! @addtogroup gpio_api_list
  21. * @{
  22. *******************************************************************************/

  23. /*****************************************************************************//*!
  24. * @brief    Initialize the GPIO registers to the default reset values.
  25. *        
  26. * @param[in] pGPIO      Pointer to GPIO module, can be GPIOA/GPIOB.
  27. *
  28. * @return none
  29. *
  30. * @ Pass/ Fail criteria: none
  31. *****************************************************************************/
  32. void GPIO_DeInit(GPIO_Type *pGPIO)
  33. {
  34.     /* Sanity check */
  35. #if defined(CPU_KE02)
  36.      ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB));
  37. #endif
  38. #if defined(CPU_KE04)
  39.     ASSERT(pGPIO == GPIOA);
  40. #endif
  41. #if defined(CPU_KE06)
  42.       ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB) || (pGPIO == GPIOC));
  43. #endif

  44.     pGPIO->PCOR = 0x00000000;   /* Port Clear Output Register */
  45.     pGPIO->PDDR = 0x00000000;   /* Port Data Direction */
  46.     //pGPIO->PDIR = 0x00000000;   /* Port Data Input Register */
  47.     pGPIO->PDOR = 0x00000000;   /* Port Data Output Register */
  48.     pGPIO->PIDR = 0xFFFFFFFF;   /* Port Input Disable Register */
  49.     pGPIO->PSOR = 0x00000000;   /* Port Set Output Register */
  50.     pGPIO->PTOR = 0x00000000;   /* Port Toggle Output Register */
  51. }

  52. /*****************************************************************************//*!
  53. * @brief    Initialize GPIO pins which are specified by u32PinMask
  54. *        
  55. * @param[in] pGPIO      Pointer to GPIO module, can be GPIOA/GPIOB.
  56. * @param[in] u32PinMask GPIO pin mask need to be set
  57. * @param[in] sGpioType  pin attribute
  58. *
  59. * @return   none
  60. *
  61. * @Note
  62. *   . High-current drive function is disabled, if the pin is configured as an input
  63. *   . Internal pullup is disabled if the pin is configured as an output
  64. *
  65. * @ Pass/ Fail criteria: none
  66. *****************************************************************************/
  67. void GPIO_Init(GPIO_Type *pGPIO, uint32_t u32PinMask, GPIO_PinConfigType sGpioType)
  68. {
  69.     /* Sanity check */
  70. #if defined(CPU_KE02)
  71.      ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB));
  72. #endif
  73. #if defined(CPU_KE04)
  74.     ASSERT(pGPIO == GPIOA);
  75. #endif
  76. #if defined(CPU_KE06)
  77.       ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB) || (pGPIO == GPIOC));
  78. #endif
  79.    
  80.     /* Config GPIO for Input or Output */
  81.     if ((sGpioType == GPIO_PinOutput) || (sGpioType == GPIO_PinOutput_HighCurrent))
  82.     {
  83.         pGPIO->PDDR |= u32PinMask;      /* Enable Port Data Direction Register */
  84.         pGPIO->PIDR |= u32PinMask;      /* Set Port Input Disable Register */   
  85.     }
  86.     else if ((sGpioType == GPIO_PinInput) || (sGpioType == GPIO_PinInput_InternalPullup))
  87.     {
  88.         pGPIO->PDDR &= ~u32PinMask;   /* Disable Port Data Direction Register */
  89.         pGPIO->PIDR &= ~u32PinMask;   /* Clear Port Input Disable Register */
  90.     }
  91.     /* Config PORT Pull select for GPIO */
  92. #if defined(CPU_KE02)
  93.     switch((uint32_t)pGPIO)
  94.     {
  95.         case GPIOA_BASE:
  96.             (sGpioType == GPIO_PinInput_InternalPullup)?(PORT->PUEL |= u32PinMask):(PORT->PUEL &= ~u32PinMask);
  97.             break;
  98.         case GPIOB_BASE:
  99.             (sGpioType == GPIO_PinInput_InternalPullup)?(PORT->PUEH |= u32PinMask):(PORT->PUEH &= ~u32PinMask);
  100.             break;
  101.         default:
  102.             break;
  103.      }
  104. #endif
  105.    
  106. #if defined(CPU_KE04)
  107.     switch((uint32_t)pGPIO)
  108.     {
  109.         case GPIOA_BASE:
  110.             (sGpioType == GPIO_PinInput_InternalPullup)?(PORT->PUEL |= u32PinMask):(PORT->PUEL &= ~u32PinMask);
  111.             break;
  112.         default:
  113.             break;
  114.      }
  115. #endif
  116.    
  117. #if defined(CPU_KE06)
  118.     switch((uint32_t)pGPIO)
  119.     {
  120.         case GPIOA_BASE:
  121.             (sGpioType == GPIO_PinInput_InternalPullup)?(PORT->PUE0 |= u32PinMask):(PORT->PUE0 &= ~u32PinMask);
  122.             break;
  123.         case GPIOB_BASE:
  124.             (sGpioType == GPIO_PinInput_InternalPullup)?(PORT->PUE1 |= u32PinMask):(PORT->PUE1 &= ~u32PinMask);
  125.             break;
  126.         case GPIOC_BASE:
  127.             (sGpioType == GPIO_PinInput_InternalPullup)?(PORT->PUE2 |= u32PinMask):(PORT->PUE2 &= ~u32PinMask);
  128.             break;
  129.         default:
  130.             break;
  131.      }
  132. #endif   
  133.    
  134.     /* Config PORT GPIO_PinOutput_HighCurrent for GPIO */
  135. #if defined(CPU_KE04)
  136.     if (u32PinMask & GPIO_PTC5_MASK)
  137.     {   
  138.         PORT->HDRVE |= PORT_HDRVE_PTC5_MASK;
  139.     }   
  140.     if (u32PinMask & GPIO_PTC1_MASK)
  141.     {   
  142.         PORT->HDRVE |= PORT_HDRVE_PTC1_MASK;
  143.     }   
  144.     if (u32PinMask & GPIO_PTB5_MASK)
  145.     {   
  146.         PORT->HDRVE |= PORT_HDRVE_PTB5_MASK;
  147.     }   
  148. #endif
  149.    
  150. #if defined(CPU_KE02) | defined(CPU_KE06)
  151.     if (pGPIO == GPIOA)
  152.     {
  153.         if (u32PinMask & GPIO_PTB4_MASK)
  154.         {   
  155.             PORT->HDRVE |= PORT_HDRVE_PTB4_MASK;
  156.         }   
  157.         if (u32PinMask & GPIO_PTB5_MASK)
  158.         {   
  159.             PORT->HDRVE |= PORT_HDRVE_PTB5_MASK;
  160.         }   
  161.         if (u32PinMask & GPIO_PTD0_MASK)
  162.         {   
  163.             PORT->HDRVE |= PORT_HDRVE_PTD0_MASK;
  164.         }   
  165.         if (u32PinMask & GPIO_PTD1_MASK)
  166.         {   
  167.             PORT->HDRVE |= PORT_HDRVE_PTD1_MASK;
  168.         }   
  169.     }
  170.     if (pGPIO == GPIOB)
  171.     {
  172.         if (u32PinMask & GPIO_PTE0_MASK)
  173.         {   
  174.             PORT->HDRVE |= PORT_HDRVE_PTE0_MASK;
  175.         }   
  176.         if (u32PinMask & GPIO_PTE1_MASK)
  177.         {   
  178.             PORT->HDRVE |= PORT_HDRVE_PTE1_MASK;
  179.         }   
  180.         if (u32PinMask & GPIO_PTH0_MASK)
  181.         {   
  182.             PORT->HDRVE |= PORT_HDRVE_PTH0_MASK;
  183.         }   
  184.         if (u32PinMask & GPIO_PTH1_MASK)
  185.         {   
  186.             PORT->HDRVE |= PORT_HDRVE_PTH1_MASK;
  187.         }   
  188.     }

  189. #endif
  190.    
  191. }

  192. /*****************************************************************************//*!
  193. * @brief    Toggle the pins which are specified by u32PinMask
  194. *        
  195. * @param[in] pGPIO       Pointer to GPIO module, can be GPIOA/GPIOB.
  196. * @param[in] u32PinMask  Specify GPIO pin need to be toggled
  197. *
  198. * @return none
  199. *
  200. * @ Pass/ Fail criteria: none
  201. *****************************************************************************/
  202. void GPIO_Toggle(GPIO_Type *pGPIO, uint32_t u32PinMask)
  203. {
  204.     /* Sanity check */
  205. #if defined(CPU_KE02)
  206.      ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB));
  207. #endif
  208. #if defined(CPU_KE04)
  209.     ASSERT(pGPIO == GPIOA);
  210. #endif
  211. #if defined(CPU_KE06)
  212.       ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB) || (pGPIO == GPIOC));
  213. #endif

  214.     pGPIO->PTOR = u32PinMask;   /* Toggle the pins specified by u32PinMask */
  215. }

  216. /*****************************************************************************//*!
  217. * @brief Read input data from GPIO which is specified by pGPIO
  218. *        
  219. * @param[in] pGPIO       Pointer to GPIO module, can be GPIOA/GPIOB.
  220. *
  221. * @return   GPIO input value unsigned int 32-bit
  222. *
  223. * @ Pass/ Fail criteria: none
  224. *****************************************************************************/
  225. uint32_t GPIO_Read(GPIO_Type *pGPIO)
  226. {
  227.     /* Sanity check */
  228. #if defined(CPU_KE02)
  229.      ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB));
  230. #endif
  231. #if defined(CPU_KE04)
  232.     ASSERT(pGPIO == GPIOA);
  233. #endif
  234. #if defined(CPU_KE06)
  235.       ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB) || (pGPIO == GPIOC));
  236. #endif

  237.     return (pGPIO->PDIR);   /* Read Port Data Input Register */
  238.   
  239. }

  240. /*****************************************************************************//*!
  241. * @brief    Write output data to GPIO which is specified by pGPIO
  242. *        
  243. * @param[in] pGPIO       Pointer to GPIO module, can be GPIOA/GPIOB.
  244. * @param[in] u32Value    value to output
  245. *
  246. * @return   none
  247. *
  248. * @ Pass/ Fail criteria: none
  249. *****************************************************************************/
  250. void GPIO_Write(GPIO_Type *pGPIO, uint32_t u32Value)
  251. {
  252.     /* Sanity check */
  253. #if defined(CPU_KE02)
  254.      ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB));
  255. #endif
  256. #if defined(CPU_KE04)
  257.     ASSERT(pGPIO == GPIOA);
  258. #endif
  259. #if defined(CPU_KE06)
  260.       ASSERT((pGPIO == GPIOA) || (pGPIO == GPIOB) || (pGPIO == GPIOC));
  261. #endif
  262.    
  263.     pGPIO->PDOR = u32Value;    /* Write Port Ouput Data Register */
  264.   
  265. }

  266. /*****************************************************************************//*!
  267. * @brief    Initialize GPIO single pin which is specified by GPIO_Pin
  268. *        
  269. * @param[in] GPIO_Pin        GPIO pin name, can be GPIO_PTA0,1 ...
  270. * @param[in] GPIO_PinConfig  Config output or input
  271. *
  272. * @return   none
  273. *
  274. * @ Pass/ Fail criteria: none
  275. *****************************************************************************/
  276. void GPIO_PinInit(GPIO_PinType GPIO_Pin, GPIO_PinConfigType GPIO_PinConfig)
  277. {
  278.     /* Sanity check */
  279.     ASSERT(GPIO_Pin <= GPIO_PTI7);
  280.       
  281.     /* Config GPIO and pull select*/
  282. #if defined(CPU_KE02)
  283.       if (GPIO_Pin < GPIO_PTE0)
  284.       {
  285.         switch (GPIO_PinConfig)
  286.         {
  287.         case GPIO_PinOutput:
  288.             GPIOA->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  289.             GPIOA->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  290.             PORT->PUEL &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  291.           break;
  292.         case GPIO_PinInput:
  293.             GPIOA->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  294.             GPIOA->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  295.             PORT->PUEL &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  296.           break;
  297.         case GPIO_PinInput_InternalPullup:
  298.             GPIOA->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  299.             GPIOA->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  300.             PORT->PUEL |= (1<<GPIO_Pin);    /* Enable Pullup */
  301.           break;
  302.         case GPIO_PinOutput_HighCurrent:
  303.             GPIOA->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  304.             GPIOA->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  305.             PORT->PUEL &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  306.           break;
  307.         }
  308.       }
  309.       else if (GPIO_Pin < GPIO_PTI0)
  310.       {
  311.         GPIO_Pin = (GPIO_PinType)(GPIO_Pin - 32);
  312.         switch (GPIO_PinConfig)
  313.         {
  314.         case GPIO_PinOutput:
  315.             GPIOB->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  316.             GPIOB->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  317.             PORT->PUEH &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  318.           break;
  319.         case GPIO_PinInput:
  320.             GPIOB->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  321.             GPIOB->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  322.             PORT->PUEH &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  323.           break;
  324.         case GPIO_PinInput_InternalPullup:
  325.             GPIOB->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  326.             GPIOB->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  327.             PORT->PUEH |= (1<<GPIO_Pin);    /* Enable Pullup */
  328.           break;
  329.         case GPIO_PinOutput_HighCurrent:
  330.             GPIOB->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  331.             GPIOB->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  332.             PORT->PUEH &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  333.           break;
  334.         }
  335.       }
  336. #endif
  337.       
  338. #if defined(CPU_KE04)
  339.       if (GPIO_Pin < GPIO_PTE0)
  340.       {
  341.         switch (GPIO_PinConfig)
  342.         {
  343.         case GPIO_PinOutput:
  344.             GPIOA->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  345.             GPIOA->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  346.             PORT->PUEL &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  347.           break;
  348.         case GPIO_PinInput:
  349.             GPIOA->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  350.             GPIOA->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  351.             PORT->PUEL &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  352.           break;
  353.         case GPIO_PinInput_InternalPullup:
  354.             GPIOA->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  355.             GPIOA->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  356.             PORT->PUEL |= (1<<GPIO_Pin);    /* Enable Pullup */
  357.           break;
  358.         case GPIO_PinOutput_HighCurrent:
  359.             GPIOA->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  360.             GPIOA->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  361.             PORT->PUEL &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  362.           break;
  363.         }
  364.       }
  365. #endif
  366.    
  367.    
  368. #if defined(CPU_KE06)
  369.       if (GPIO_Pin < GPIO_PTE0)
  370.       {
  371.         switch (GPIO_PinConfig)
  372.         {
  373.         case GPIO_PinOutput:
  374.             GPIOA->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  375.             GPIOA->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  376.             PORT->PUE0 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  377.           break;
  378.         case GPIO_PinInput:
  379.             GPIOA->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  380.             GPIOA->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  381.             PORT->PUE0 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  382.           break;
  383.         case GPIO_PinInput_InternalPullup:
  384.             GPIOA->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  385.             GPIOA->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  386.             PORT->PUE0 |= (1<<GPIO_Pin);    /* Enable Pullup */
  387.           break;
  388.         case GPIO_PinOutput_HighCurrent:
  389.             GPIOA->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  390.             GPIOA->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  391.             PORT->PUE0 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  392.           break;
  393.         }
  394.       }
  395.       else if (GPIO_Pin < GPIO_PTI0)
  396.       {
  397.         GPIO_Pin = (GPIO_PinType)(GPIO_Pin - 32);
  398.         switch (GPIO_PinConfig)
  399.         {
  400.         case GPIO_PinOutput:
  401.             GPIOB->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  402.             GPIOB->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  403.             PORT->PUE1 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  404.           break;
  405.         case GPIO_PinInput:
  406.             GPIOB->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  407.             GPIOB->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  408.             PORT->PUE1 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  409.           break;
  410.         case GPIO_PinInput_InternalPullup:
  411.             GPIOB->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  412.             GPIOB->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  413.             PORT->PUE1 |= (1<<GPIO_Pin);    /* Enable Pullup */
  414.           break;
  415.         case GPIO_PinOutput_HighCurrent:
  416.             GPIOB->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  417.             GPIOB->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  418.             PORT->PUE1 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  419.           break;
  420.         }
  421.       }
  422.       else
  423.       {
  424.         GPIO_Pin = (GPIO_PinType)(GPIO_Pin - 64);
  425.         switch (GPIO_PinConfig)
  426.         {
  427.         case GPIO_PinOutput:
  428.             GPIOC->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  429.             GPIOC->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  430.             PORT->PUE2 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  431.           break;
  432.         case GPIO_PinInput:
  433.             GPIOC->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  434.             GPIOC->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  435.             PORT->PUE2 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  436.           break;
  437.         case GPIO_PinInput_InternalPullup:
  438.             GPIOC->PDDR &= ~(1<<GPIO_Pin);     /* Disable Port Data Direction Register */
  439.             GPIOC->PIDR &= ~(1<<GPIO_Pin);     /* Clear Port Input Disable Register */
  440.             PORT->PUE2 |= (1<<GPIO_Pin);    /* Enable Pullup */
  441.           break;
  442.         case GPIO_PinOutput_HighCurrent:
  443.             GPIOC->PDDR |= (1<<GPIO_Pin);      /* Enable Port Data Direction Register */
  444.             GPIOC->PIDR |= (1<<GPIO_Pin);      /* Set Port Input Disable Register */
  445.             PORT->PUE2 &= ~(1<<GPIO_Pin);    /* Disable Pullup */
  446.           break;
  447.         }
  448.       }
  449. #endif
  450.       
  451.     /* Config GPIO HDRV */
  452.     if(GPIO_PinConfig == GPIO_PinOutput_HighCurrent)
  453.     {
  454. #if defined(CPU_KE04)
  455.         switch (GPIO_Pin)
  456.         {
  457.             case GPIO_PTB5:
  458.                 PORT->HDRVE |= PORT_HDRVE_PTB5_MASK;
  459.                 break;
  460.             case GPIO_PTC1:
  461.                 PORT->HDRVE |= PORT_HDRVE_PTC1_MASK;
  462.                 break;
  463.             case GPIO_PTC5:
  464.                 PORT->HDRVE |= PORT_HDRVE_PTC5_MASK;
  465.                 break;
  466.             default:
  467.                 break;
  468.         }
  469. #endif
  470.    
  471. #if defined(CPU_KE06) | defined(CPU_KE02)
  472.         switch (GPIO_Pin)
  473.         {
  474.             case GPIO_PTB4:
  475.                 PORT->HDRVE |= PORT_HDRVE_PTB4_MASK;
  476.                 break;
  477.             case GPIO_PTB5:
  478.                 PORT->HDRVE |= PORT_HDRVE_PTB5_MASK;
  479.                 break;
  480.             case GPIO_PTD0:
  481.                 PORT->HDRVE |= PORT_HDRVE_PTD0_MASK;
  482.                 break;
  483.             case GPIO_PTD1:
  484.                 PORT->HDRVE |= PORT_HDRVE_PTD1_MASK;
  485.                 break;
  486.             case GPIO_PTE0:
  487.                 PORT->HDRVE |= PORT_HDRVE_PTE0_MASK;
  488.                 break;
  489.             case GPIO_PTE1:
  490.                 PORT->HDRVE |= PORT_HDRVE_PTE1_MASK;
  491.                 break;
  492.             case GPIO_PTH0:
  493.                 PORT->HDRVE |= PORT_HDRVE_PTH0_MASK;
  494.                 break;
  495.             case GPIO_PTH1:
  496.                 PORT->HDRVE |= PORT_HDRVE_PTH1_MASK;
  497.                 break;
  498.             default:
  499.                 break;
  500.         }
  501. #endif
  502.     }
  503. }

  504. /*****************************************************************************//*!
  505. * @brief    Toggle GPIO single pin which is specified by GPIO_Pin
  506. *        
  507. * @param[in] GPIO_Pin        GPIO pin name, can be GPIO_PTA0,1 ...
  508. *
  509. * @return   none
  510. *
  511. * @ Pass/ Fail criteria: none
  512. *****************************************************************************/
  513. void GPIO_PinToggle(GPIO_PinType GPIO_Pin)
  514. {
  515.     /* Sanity check */
  516.     ASSERT(GPIO_Pin <= GPIO_PTI7);

  517.     if (GPIO_Pin < GPIO_PTE0)
  518.     {
  519.         /* PTA0-7, PTB0-7, PTC0-7, PTD0-7 */
  520.         GPIOA->PTOR = (1<<GPIO_Pin);
  521.     }
  522. #if !defined(CPU_KE04)
  523.     else
  524.     {
  525.         /* PTE0-7, PTF0-7, PTH0-7, PTI0-7 */
  526.         GPIO_Pin = (GPIO_PinType)(GPIO_Pin - GPIO_PTE0);
  527.         GPIOB->PTOR = (1<<GPIO_Pin);
  528.     }
  529. #endif
  530. }

  531. /*****************************************************************************//*!
  532. * @brief    Set GPIO single pin which is specified by GPIO_Pin
  533. *        
  534. * @param[in] GPIO_Pin        GPIO pin name, can be GPIO_PTA0,1 ...
  535. *
  536. * @return   none
  537. *
  538. * @ Pass/ Fail criteria: none
  539. *****************************************************************************/
  540. void GPIO_PinSet(GPIO_PinType GPIO_Pin)
  541. {
  542.     /* Sanity check */
  543.     ASSERT(GPIO_Pin <= GPIO_PTI7);
  544.    
  545.     if (GPIO_Pin < GPIO_PTE0)
  546.     {
  547.         /* PTA0-7, PTB0-7, PTC0-7, PTD0-7 */
  548.         GPIOA->PSOR = (1<<GPIO_Pin);
  549.     }
  550. #if !defined(CPU_KE04)   
  551.     else
  552.     {
  553.         /* PTE0-7, PTF0-7, PTH0-7, PTI0-7 */
  554.         GPIO_Pin = (GPIO_PinType)(GPIO_Pin - GPIO_PTE0);
  555.         GPIOB->PSOR = (1<<GPIO_Pin);
  556.     }
  557. #endif
  558. }

  559. /*****************************************************************************//*!
  560. * @brief    Clear GPIO single pin which is specified by GPIO_Pin
  561. *        
  562. * @param[in] GPIO_Pin        GPIO pin name, can be GPIO_PTA0,1 ...
  563. *
  564. * @return   none
  565. *
  566. * @ Pass/ Fail criteria: none
  567. *****************************************************************************/
  568. void GPIO_PinClear(GPIO_PinType GPIO_Pin)
  569. {
  570.     /* Sanity check */
  571.     ASSERT(GPIO_Pin <= GPIO_PTI7);
  572.    
  573.     if (GPIO_Pin < GPIO_PTE0)
  574.     {
  575.         /* PTA0-7, PTB0-7, PTC0-7, PTD0-7 */
  576.         GPIOA->PCOR = (1<<GPIO_Pin);
  577.     }
  578. #if !defined(CPU_KE04)   
  579.     else
  580.     {
  581.         /* PTE0-7, PTF0-7, PTH0-7, PTI0-7 */
  582.         GPIO_Pin = (GPIO_PinType)(GPIO_Pin - 32);
  583.         GPIOB->PCOR = (1<<GPIO_Pin);
  584.     }
  585. #endif
  586. }

  587. /*! @} End of gpio_api_list */
复制代码
gpio.h
  1. /******************************************************************************
  2. *
  3. *******************************************************************************/
  4. #ifndef _GPIO_H_
  5. #define _GPIO_H_

  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif

  9. #include "common.h"
  10. #include "stdint.h"

  11. /******************************************************************************
  12. *define gpio pin name
  13. *
  14. *//*! @addtogroup gpio_pin_name_list
  15. * @{
  16. *******************************************************************************/
  17. typedef enum
  18. {
  19.     /* in GPIOA register */
  20.     GPIO_PTA0 = 0,              /*!< GPIO Pin PTA0 */
  21.     GPIO_PTA1,                  /*!< GPIO Pin PTA1 */
  22.     GPIO_PTA2,                  /*!< GPIO Pin PTA2 */
  23.     GPIO_PTA3,                  /*!< GPIO Pin PTA3 */
  24.     GPIO_PTA4,                  /*!< GPIO Pin PTA4 */
  25.     GPIO_PTA5,                  /*!< GPIO Pin PTA5 */
  26.     GPIO_PTA6,                  /*!< GPIO Pin PTA6 */
  27.     GPIO_PTA7,                  /*!< GPIO Pin PTA7 */
  28.     GPIO_PTB0,                  /*!< GPIO Pin PTB0 */
  29.     GPIO_PTB1,                  /*!< GPIO Pin PTB1 */
  30.     GPIO_PTB2,                  /*!< GPIO Pin PTB2 */
  31.     GPIO_PTB3,                  /*!< GPIO Pin PTB3 */
  32.     GPIO_PTB4,                  /*!< GPIO Pin PTB4 */
  33.     GPIO_PTB5,                  /*!< GPIO Pin PTB5 */
  34.     GPIO_PTB6,                  /*!< GPIO Pin PTB6 */
  35.     GPIO_PTB7,                  /*!< GPIO Pin PTB7 */
  36.     GPIO_PTC0,                  /*!< GPIO Pin PTC0 */
  37.     GPIO_PTC1,                  /*!< GPIO Pin PTC1 */
  38.     GPIO_PTC2,                  /*!< GPIO Pin PTC2 */
  39.     GPIO_PTC3,                  /*!< GPIO Pin PTC3 */
  40.     GPIO_PTC4,                  /*!< GPIO Pin PTC4 */
  41.     GPIO_PTC5,                  /*!< GPIO Pin PTC5 */
  42.     GPIO_PTC6,                  /*!< GPIO Pin PTC6 */
  43.     GPIO_PTC7,                  /*!< GPIO Pin PTC7 */
  44.     GPIO_PTD0,                  /*!< GPIO Pin PTD0 */
  45.     GPIO_PTD1,                  /*!< GPIO Pin PTD1 */
  46.     GPIO_PTD2,                  /*!< GPIO Pin PTD2 */
  47.     GPIO_PTD3,                  /*!< GPIO Pin PTD3 */
  48.     GPIO_PTD4,                  /*!< GPIO Pin PTD4 */
  49.     GPIO_PTD5,                  /*!< GPIO Pin PTD5 */
  50.     GPIO_PTD6,                  /*!< GPIO Pin PTD6 */
  51.     GPIO_PTD7,                  /*!< GPIO Pin PTD7 */
  52.     /* in GPIOB register */
  53.     GPIO_PTE0,                  /*!< GPIO Pin PTE0 */
  54.     GPIO_PTE1,                  /*!< GPIO Pin PTE1 */
  55.     GPIO_PTE2,                  /*!< GPIO Pin PTE2 */
  56.     GPIO_PTE3,                  /*!< GPIO Pin PTE3 */
  57.     GPIO_PTE4,                  /*!< GPIO Pin PTE4 */
  58.     GPIO_PTE5,                  /*!< GPIO Pin PTE5 */
  59.     GPIO_PTE6,                  /*!< GPIO Pin PTE6 */
  60.     GPIO_PTE7,                  /*!< GPIO Pin PTE7 */
  61.     GPIO_PTF0,                  /*!< GPIO Pin PTF0 */
  62.     GPIO_PTF1,                  /*!< GPIO Pin PTF1 */
  63.     GPIO_PTF2,                  /*!< GPIO Pin PTF2 */
  64.     GPIO_PTF3,                  /*!< GPIO Pin PTF3 */
  65.     GPIO_PTF4,                  /*!< GPIO Pin PTF4 */
  66.     GPIO_PTF5,                  /*!< GPIO Pin PTF5 */
  67.     GPIO_PTF6,                  /*!< GPIO Pin PTF6 */
  68.     GPIO_PTF7,                  /*!< GPIO Pin PTF7 */
  69.     GPIO_PTG0,                  /*!< GPIO Pin PTG0 */
  70.     GPIO_PTG1,                  /*!< GPIO Pin PTG1 */
  71.     GPIO_PTG2,                  /*!< GPIO Pin PTG2 */
  72.     GPIO_PTG3,                  /*!< GPIO Pin PTG3 */
  73.     GPIO_PTG4,                  /*!< GPIO Pin PTG4 */
  74.     GPIO_PTG5,                  /*!< GPIO Pin PTG5 */
  75.     GPIO_PTG6,                  /*!< GPIO Pin PTG6 */
  76.     GPIO_PTG7,                  /*!< GPIO Pin PTG7 */
  77.     GPIO_PTH0,                  /*!< GPIO Pin PTH0 */
  78.     GPIO_PTH1,                  /*!< GPIO Pin PTH1 */
  79.     GPIO_PTH2,                  /*!< GPIO Pin PTH2 */
  80.     GPIO_PTH3,                  /*!< GPIO Pin PTH3 */
  81.     GPIO_PTH4,                  /*!< GPIO Pin PTH4 */
  82.     GPIO_PTH5,                  /*!< GPIO Pin PTH5 */
  83.     GPIO_PTH6,                  /*!< GPIO Pin PTH6 */
  84.     GPIO_PTH7,                  /*!< GPIO Pin PTH7 */
  85.     /* the following pins are not in KE02 */
  86.     GPIO_PTI0,                  /*!< GPIO Pin PTI0 */
  87.     GPIO_PTI1,                  /*!< GPIO Pin PTI1 */
  88.     GPIO_PTI2,                  /*!< GPIO Pin PTI2 */
  89.     GPIO_PTI3,                  /*!< GPIO Pin PTI3 */
  90.     GPIO_PTI4,                  /*!< GPIO Pin PTI4 */
  91.     GPIO_PTI5,                  /*!< GPIO Pin PTI5 */
  92.     GPIO_PTI6,                  /*!< GPIO Pin PTI6 */
  93.     GPIO_PTI7,                  /*!< GPIO Pin PTI7 */
  94. } GPIO_PinType;
  95. /*! @} End of gpio_pin_name_list    */

  96. /******************************************************************************
  97. *define gpio pin mask
  98. *
  99. *//*! @addtogroup gpio_pin_mask_list
  100. * @{
  101. *******************************************************************************/
  102. typedef enum
  103. {
  104.     /* in GPIOA register */
  105.     GPIO_PTA0_MASK = (1<<0),    /*!< GPIO Pin PTA0 bit mask */        
  106.     GPIO_PTA1_MASK = (1<<1),    /*!< GPIO Pin PTA1 bit mask */
  107.     GPIO_PTA2_MASK = (1<<2),    /*!< GPIO Pin PTA2 bit mask */
  108.     GPIO_PTA3_MASK = (1<<3),    /*!< GPIO Pin PTA3 bit mask */
  109.     GPIO_PTA4_MASK = (1<<4),    /*!< GPIO Pin PTA4 bit mask */
  110.     GPIO_PTA5_MASK = (1<<5),    /*!< GPIO Pin PTA5 bit mask */
  111.     GPIO_PTA6_MASK = (1<<6),    /*!< GPIO Pin PTA6 bit mask */
  112.     GPIO_PTA7_MASK = (1<<7),    /*!< GPIO Pin PTA7 bit mask */
  113.     GPIO_PTB0_MASK = (1<<8),    /*!< GPIO Pin PTB0 bit mask */
  114.     GPIO_PTB1_MASK = (1<<9),    /*!< GPIO Pin PTB1 bit mask */
  115.     GPIO_PTB2_MASK = (1<<10),   /*!< GPIO Pin PTB2 bit mask */
  116.     GPIO_PTB3_MASK = (1<<11),   /*!< GPIO Pin PTB3 bit mask */
  117.     GPIO_PTB4_MASK = (1<<12),   /*!< GPIO Pin PTB4 bit mask */
  118.     GPIO_PTB5_MASK = (1<<13),   /*!< GPIO Pin PTB5 bit mask */
  119.     GPIO_PTB6_MASK = (1<<14),   /*!< GPIO Pin PTB6 bit mask */
  120.     GPIO_PTB7_MASK = (1<<15),   /*!< GPIO Pin PTB7 bit mask */
  121.     GPIO_PTC0_MASK = (1<<16),   /*!< GPIO Pin PTC0 bit mask */
  122.     GPIO_PTC1_MASK = (1<<17),   /*!< GPIO Pin PTC1 bit mask */
  123.     GPIO_PTC2_MASK = (1<<18),   /*!< GPIO Pin PTC2 bit mask */
  124.     GPIO_PTC3_MASK = (1<<19),   /*!< GPIO Pin PTC3 bit mask */
  125.     GPIO_PTC4_MASK = (1<<20),   /*!< GPIO Pin PTC4 bit mask */
  126.     GPIO_PTC5_MASK = (1<<21),   /*!< GPIO Pin PTC5 bit mask */
  127.     GPIO_PTC6_MASK = (1<<22),   /*!< GPIO Pin PTC6 bit mask */
  128.     GPIO_PTC7_MASK = (1<<23),   /*!< GPIO Pin PTC7 bit mask */
  129.     GPIO_PTD0_MASK = (1<<24),   /*!< GPIO Pin PTD0 bit mask */
  130.     GPIO_PTD1_MASK = (1<<25),   /*!< GPIO Pin PTD1 bit mask */
  131.     GPIO_PTD2_MASK = (1<<26),   /*!< GPIO Pin PTD2 bit mask */
  132.     GPIO_PTD3_MASK = (1<<27),   /*!< GPIO Pin PTD3 bit mask */
  133.     GPIO_PTD4_MASK = (1<<28),   /*!< GPIO Pin PTD4 bit mask */
  134.     GPIO_PTD5_MASK = (1<<29),   /*!< GPIO Pin PTD5 bit mask */
  135.     GPIO_PTD6_MASK = (1<<30),   /*!< GPIO Pin PTD6 bit mask */
  136.     GPIO_PTD7_MASK = (1<<31),   /*!< GPIO Pin PTD7 bit mask */
  137.     /* in GPIOB register */
  138.     GPIO_PTE0_MASK = (1<<0),    /*!< GPIO Pin PTE0 bit mask */
  139.     GPIO_PTE1_MASK = (1<<1),    /*!< GPIO Pin PTE1 bit mask */
  140.     GPIO_PTE2_MASK = (1<<2),    /*!< GPIO Pin PTE2 bit mask */
  141.     GPIO_PTE3_MASK = (1<<3),    /*!< GPIO Pin PTE3 bit mask */
  142.     GPIO_PTE4_MASK = (1<<4),    /*!< GPIO Pin PTE4 bit mask */
  143.     GPIO_PTE5_MASK = (1<<5),    /*!< GPIO Pin PTE5 bit mask */
  144.     GPIO_PTE6_MASK = (1<<6),    /*!< GPIO Pin PTE6 bit mask */
  145.     GPIO_PTE7_MASK = (1<<7),    /*!< GPIO Pin PTE7 bit mask */
  146.     GPIO_PTF0_MASK = (1<<8),    /*!< GPIO Pin PTF0 bit mask */
  147.     GPIO_PTF1_MASK = (1<<9),    /*!< GPIO Pin PTF1 bit mask */
  148.     GPIO_PTF2_MASK = (1<<10),   /*!< GPIO Pin PTF2 bit mask */
  149.     GPIO_PTF3_MASK = (1<<11),   /*!< GPIO Pin PTF3 bit mask */
  150.     GPIO_PTF4_MASK = (1<<12),   /*!< GPIO Pin PTF4 bit mask */
  151.     GPIO_PTF5_MASK = (1<<13),   /*!< GPIO Pin PTF5 bit mask */
  152.     GPIO_PTF6_MASK = (1<<14),   /*!< GPIO Pin PTF6 bit mask */
  153.     GPIO_PTF7_MASK = (1<<15),   /*!< GPIO Pin PTF7 bit mask */
  154.     GPIO_PTG0_MASK = (1<<16),   /*!< GPIO Pin PTG0 bit mask */
  155.     GPIO_PTG1_MASK = (1<<17),   /*!< GPIO Pin PTG1 bit mask */
  156.     GPIO_PTG2_MASK = (1<<18),   /*!< GPIO Pin PTG2 bit mask */
  157.     GPIO_PTG3_MASK = (1<<19),   /*!< GPIO Pin PTG3 bit mask */
  158.     GPIO_PTG4_MASK = (1<<20),   /*!< GPIO Pin PTG4 bit mask */
  159.     GPIO_PTG5_MASK = (1<<21),   /*!< GPIO Pin PTG5 bit mask */
  160.     GPIO_PTG6_MASK = (1<<22),   /*!< GPIO Pin PTG6 bit mask */
  161.     GPIO_PTG7_MASK = (1<<23),   /*!< GPIO Pin PTG7 bit mask */
  162.     GPIO_PTH0_MASK = (1<<24),   /*!< GPIO Pin PTH0 bit mask */
  163.     GPIO_PTH1_MASK = (1<<25),   /*!< GPIO Pin PTH1 bit mask */
  164.     GPIO_PTH2_MASK = (1<<26),   /*!< GPIO Pin PTH2 bit mask */
  165.     GPIO_PTH3_MASK = (1<<27),   /*!< GPIO Pin PTH3 bit mask */
  166.     GPIO_PTH4_MASK = (1<<28),   /*!< GPIO Pin PTH4 bit mask */
  167.     GPIO_PTH5_MASK = (1<<29),   /*!< GPIO Pin PTH5 bit mask */
  168.     GPIO_PTH6_MASK = (1<<30),   /*!< GPIO Pin PTH6 bit mask */
  169.     GPIO_PTH7_MASK = (1<<31),   /*!< GPIO Pin PTH7 bit mask */
  170. } GPIO_PinMaskType;
  171. /*! @} End of gpio_pin_mask_list    */


  172. /******************************************************************************
  173. *define gpio pin config type
  174. *
  175. *//*! @addtogroup gpio_pin_config_type_list
  176. * @{
  177. *******************************************************************************/
  178. /*
  179. *   . Internal pullup is disabled if the pin is configured as an output
  180. *   . High-current drive function is disabled, if the pin is configured as an input
  181. *       Only PTH1/0, PTE1/0, PTD1/0, PTB5/4 support Hight-current Drive.
  182. */
  183. typedef enum
  184. {
  185.     GPIO_PinOutput = 0,                 /*!< set pin as outout */
  186.     GPIO_PinInput,                      /*!< set pin as input */
  187.     GPIO_PinInput_InternalPullup,       /*!< set internal pullup for input pin */
  188.     GPIO_PinOutput_HighCurrent,         /*!< set high drive for output pin */
  189. } GPIO_PinConfigType;
  190. /*! @} End of gpio_pin_config_type_list */

  191. /******************************************************************************
  192. * define GPIO APIs
  193. *
  194. *//*! @addtogroup gpio_api_list
  195. * @{
  196. *******************************************************************************/

  197. /*****************************************************************************//*!
  198. * @brief    Toggle the pins which are specified by u32PinMask in single cycle.
  199. *        
  200. * @param[in] pGPIO       Pointer to GPIO module, can be FGPIOA/FGPIOB.
  201. * @param[in] u32PinMask  Specify GPIO pin need to be toggled
  202. *
  203. * @return none
  204. *
  205. * @ Pass/ Fail criteria: none
  206. *****************************************************************************/
  207. __STATIC_INLINE void FGPIO_Toggle(FGPIO_Type *pFGPIO, uint32_t u32PinMask)
  208. {
  209.     pFGPIO->PTOR = u32PinMask;   /* Toggle the pins specified by u32PinMask */
  210. }

  211. /*****************************************************************************//*!
  212. * @brief Read input data from GPIO which is specified by pGPIO in single cycle.
  213. *        
  214. * @param[in] pGPIO       Pointer to GPIO module, can be FGPIOA/FGPIOB.
  215. *
  216. * @return   GPIO input value unsigned int 32-bit
  217. *
  218. * @ Pass/ Fail criteria: none
  219. *****************************************************************************/
  220. __STATIC_INLINE uint32_t FGPIO_Read(FGPIO_Type *pFGPIO)
  221. {
  222.     return (pFGPIO->PDIR);      /* Read Port Data Input Register */
  223.   
  224. }

  225. /*****************************************************************************//*!
  226. * @brief    Write output data to GPIO which is specified by pGPIO in single cycle.
  227. *        
  228. * @param[in] pGPIO       Pointer to GPIO module, can be FGPIOA/FGPIOB.
  229. * @param[in] u32Value    value to output
  230. *
  231. * @return   none
  232. *
  233. * @ Pass/ Fail criteria: none
  234. *****************************************************************************/
  235. __STATIC_INLINE void FGPIO_Write(FGPIO_Type *pFGPIO, uint32_t u32Value)
  236. {   
  237.     pFGPIO->PDOR = u32Value;    /* Write Port Ouput Data Register */
  238. }

  239. void GPIO_DeInit(GPIO_Type *pGPIO);
  240. void GPIO_Init(GPIO_Type *pGPIO, uint32_t u32PinMask, GPIO_PinConfigType sGpioType);
  241. void GPIO_Toggle(GPIO_Type *pGPIO, uint32_t u32PinMask);
  242. uint32_t GPIO_Read(GPIO_Type *pGPIO);
  243. void GPIO_Write(GPIO_Type *pGPIO, uint32_t u32Value);
  244. void GPIO_PinInit(GPIO_PinType GPIO_Pin, GPIO_PinConfigType GPIO_PinConfig);
  245. void GPIO_PinToggle(GPIO_PinType GPIO_Pin);
  246. void GPIO_PinSet(GPIO_PinType GPIO_Pin);
  247. void GPIO_PinClear(GPIO_PinType GPIO_Pin);
  248.    
  249. /*! @} End of gpio_api_list */

  250. #ifdef __cplusplus
  251. }
  252. #endif
  253. #endif /* #ifndef _GPIO_H_ */
复制代码

出0入0汤圆

发表于 2013-10-30 15:25:47 | 显示全部楼层
楼上的应该是KE02的板子吧

出0入0汤圆

发表于 2014-1-2 14:15:40 | 显示全部楼层
本帖最后由 FSL_TICS_ZJJ 于 2014-1-27 16:40 编辑

当然是可以的,你可以到我们的官网下载代码。
KE02:http://www.freescale.com/zh-Hans ... b=Design_Tools_Tab#
KL15您可以参考KL25的代码:http://www.freescale.com/zh-Hans ... b=Design_Tools_Tab#
希望能帮到您!

出0入0汤圆

发表于 2014-2-20 14:59:38 | 显示全部楼层
官方已经有这样的程序了,在keil下的。

出0入0汤圆

发表于 2014-3-2 15:56:47 | 显示全部楼层
其实PE就可以转成KEIL的工程
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表