找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1014|回复: 0
打印 上一主题 下一主题
收起左侧

关于ARM的FS-EMB4412A实验箱关于LED灯程序的问题

[复制链接]
跳转到指定楼层
楼主
ID:842738 发表于 2023-3-26 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上面的是实验箱的第一个代码,后面是根据第一个改出来的,然后现在的要求是先亮第一段代码的LED灯,然后点击4412实验箱上的音量+和音量-可以中断切换到第二个代码的亮灯。或者可以给出一个延时函数,延时2秒左右的时间切换到第二段代码也可以。

  1. #include "exynos_4412.h"


  2. /**********************************************************************
  3. * @brief  mydelay_ms program body
  4. * @param[in] int (ms)
  5. * @return   None
  6. **********************************************************************/
  7. void mydelay_ms(int ms)
  8. {
  9. int i, j;
  10. while(ms--)
  11. {
  12.   for (i = 0; i < 5; i++)
  13.    for (j = 0; j < 514; j++);
  14. }
  15. }

  16. /*-------------------------MAIN FUNCTION------------------------------*/
  17. /**********************************************************************
  18. * @brief  Main program body
  19. * @param[in] None
  20. * @return   int
  21. **********************************************************************/
  22. int main(void)
  23. {
  24. /*
  25.   *Config
  26.   *D1 -> GPX2_4 D2 -> GPX3_0
  27.   *D3 -> GPX2_7  D4 -> GPX1_0
  28.   */

  29. GPX2.CON = (GPX2.CON & ~(0xf<<16 | 0xf<<28)) | (0x1<<16 | 0x1<<28) ;//GPX2_4:output, D1
  30.                  //GPX2_7:output, D3
  31. GPX3.CON = (GPX3.CON & ~(0xf<<0)) | 0x1<<0; //GPX3_0:output, D2
  32. GPX1.CON = (GPX1.CON & ~(0xf<<0)) | 0x1<<0; //GPX1_0:output, D4


  33. /*
  34.   * Turn off all LED
  35.   * */
  36. GPX2.DAT &= ~(0x1 << 4);
  37. GPX2.DAT &= ~(0x1 << 7);
  38. GPX3.DAT &= ~(0x1 << 0);
  39. GPX1.DAT &= ~(0x1 << 0);
  40. while(1)
  41. {
  42.   //Turn on D1
  43.   GPX2.DAT |= 0x1 << 4;
  44.   mydelay_ms(500);

  45.   //Turn on D3
  46.   GPX2.DAT |= 0x1 << 7;


  47.   //Turn off D1
  48.   GPX2.DAT &= ~(0x1 << 4);
  49.   mydelay_ms(500);

  50.   //Turn on D2
  51.   GPX3.DAT |= 0x1 << 0;



  52.   //Turn off D3
  53.   GPX2.DAT &= ~(0x1 << 7);
  54.   mydelay_ms(500);

  55.   //Turn on D4
  56.   GPX1.DAT |= 0x1 << 0;

  57.   //Turn off D2
  58.   GPX3.DAT &= ~(0x1 << 0);
  59.   mydelay_ms(500);




  60.   //Turn off D4
  61.   GPX1.DAT &= ~(0x1 << 0);

  62. }
  63. return 0;
  64. }
复制代码





#include "exynos_4412.h"
/**********************************************************************
* @brief  mydelay_ms program body
* @param[in] int (ms)
* @return   None
**********************************************************************/
void mydelay_ms(int ms)
{
int i, j;
while(ms--)
{
  for (i = 0; i < 5; i++)
   for (j = 0; j < 514; j++);
}
}

/*-------------------------MAIN FUNCTION------------------------------*/
/**********************************************************************
* @brief  Main program body
* @param[in] None
* @return   int
**********************************************************************/
int main(void)
{
/*
  *Config
  *D1 -> GPX2_4 D2 -> GPX3_0
  *D3 -> GPX2_7  D4 -> GPX1_0
  */

GPX2.CON = (GPX2.CON & ~(0xf<<16 | 0xf<<28)) | (0x1<<16 | 0x1<<28) ;//GPX2_4:output, D1
                 //GPX2_7:output, D3
GPX3.CON = (GPX3.CON & ~(0xf<<0)) | 0x1<<0; //GPX3_0:output, D2
// GPX1.CON = (GPX1.CON & ~(0xf<<0)) | 0x1<<0; //GPX1_0:output, D4


/*
  * Turn off all LED
  * */
GPX2.DAT &= ~(0x1 << 4);
GPX3.DAT &= ~(0x1 << 0);
GPX2.DAT &= ~(0x1 << 7);
GPX1.DAT &= ~(0x1 << 0);
while(1)
{
  //Turn on D1
  GPX2.DAT |= 0x1 << 4;
  mydelay_ms(500);

  //Turn on D2
  GPX3.DAT |= 0x1 << 0;
  //Turn off D1
  GPX2.DAT &= ~(0x1 << 4);
  mydelay_ms(500);

  //Turn on D3
  // GPX2.DAT |= 0x1 << 7;
  //Turn off D2
  GPX3.DAT &= ~(0x1 << 0);
  mydelay_ms(500);

  //Turn on D4
  // GPX1.DAT |= 0x1 << 0;
  //Turn off D3
  //GPX2.DAT &= ~(0x1 << 7);
  //mydelay_ms(500);

  //Turn off D4
  //GPX1.DAT &= ~(0x1 << 0);

}
return 0;
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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