红树林游戏官网开户: [活动专区] 【AutoChips 7801x MCU评测报告】+串口nr_micro_shell移植测试

禁止游客赌场登入
2662|14
楼主
      移植了一个串口shell程序nr_micro_shell。顺便测试了I2C接口的读写AT24Cxx。移植很简单,红树林游戏官网开户:主要在nr_micro_shell_config.h文件内配置,以及串口发送接收函数。主函数main内初始化和接收串口数据处理。


代码如下:

  1. /*************<include>****************/
  2. #include "string.h"

  3. #include "ac780x.h"
  4. #include "system_ac780x.h"
  5. #include "ac780x_gpio.h"
  6. #include "ac780x_uart.h"

  7. #include "elog.h"
  8. #include "nr_micro_shell.h"

  9. #include "i2c.h"


  10. /*************<macro>******************/
  11. #define LED2_PORT                        (GPIOC)
  12. #define LED2_PIN                        (GPIO_PIN9)

  13. #define LED3_PORT                        (GPIOC)
  14. #define LED3_PIN                        (GPIO_PIN7)
  15.        
  16. #define LED2_ON()                                do{GPIO_SetPinLevel(LED2_PORT, LED2_PIN, GPIO_LEVEL_HIGH);}while(0)
  17. #define LED2_OFF()                                do{GPIO_SetPinLevel(LED2_PORT, LED2_PIN, GPIO_LEVEL_LOW);}while(0)
  18. #define LED2_TOGGLE()                        do{if(GPIO_GetPinLevel(LED2_PORT, LED2_PIN)){LED2_OFF;}else{LED2_ON;}}while(0)

  19. #define LED3_ON()                                do{GPIO_SetPinLevel(LED3_PORT, LED3_PIN, GPIO_LEVEL_HIGH);}while(0)
  20. #define LED3_OFF()                                do{GPIO_SetPinLevel(LED3_PORT, LED3_PIN, GPIO_LEVEL_LOW);}while(0)
  21. #define LED3_TOGGLE()                        do{if(GPIO_GetPinLevel(LED3_PORT, LED3_PIN)){LED3_OFF;}else{LED3_ON;}}while(0)


  22. /*************<enum>*******************/


  23. /*************<union>******************/


  24. /*************<struct>*****************/


  25. /*************<variable>***************/


  26. /*************<prototype>**************/
  27. void shell_ls_cmd(char argc, char *argv)
  28. {
  29.                 unsigned int i = 0;
  30.         if (argc > 1)
  31.         {
  32.                 if (!strcmp("cmd", &argv[argv[1]]))
  33.                 {

  34.                         for (i = 0; nr_shell.static_cmd[i].fp != NULL; i++)
  35.                         {
  36.                                 shell_printf(nr_shell.static_cmd[i].cmd);
  37.                                 shell_printf("\r\n");
  38.                         }
  39.                 }
  40.                 else if (!strcmp("-v", &argv[argv[1]]))
  41.                 {
  42.                         shell_printf("ls version 1.0.\r\n");
  43.                 }
  44.                 else if (!strcmp("-h", &argv[argv[1]]))
  45.                 {
  46.                         shell_printf("useage: ls [options]\r\n");
  47.                         shell_printf("options: \r\n");
  48.                         shell_printf("\t -h \t: show help\r\n");
  49.                         shell_printf("\t -v \t: show version\r\n");
  50.                         shell_printf("\t cmd \t: show all commands\r\n");
  51.                 }
  52.         }
  53.         else
  54.         {
  55.                 shell_printf("ls need more arguments!\r\n");
  56.         }
  57. }

  58. /**
  59. * [url=home.php?mod=space&uid=247401]@brief[/url] test command
  60. */
  61. void shell_test_cmd(char argc, char *argv)
  62. {
  63.         unsigned int i;
  64.         shell_printf("test command:\r\n");
  65.         for (i = 0; i < argc; i++)
  66.         {
  67.                         shell_printf("paras %d: %s\r\n", i, &(argv[argv[i]]));
  68.         }
  69. }

  70. /**
  71. * [url=home.php?mod=space&uid=247401]@brief[/url] test command
  72. */
  73. void shell_led_cmd(char argc, char *argv)
  74. {
  75.         if (argc > 1)
  76.         {        
  77.                 if (!strcmp("on", &argv[argv[1]]))
  78.                 {
  79.                         if (!strcmp("1", &argv[argv[2]]))
  80.                         {
  81.                                 LED2_ON();
  82.                         }else if (!strcmp("2", &argv[argv[2]]))
  83.                         {
  84.                                 LED3_ON();
  85.                         }else
  86.                         {
  87.                                 shell_printf("useage: led [on/off] [1/2/3/4]\r\n");        
  88.                         }
  89.                 }else if (!strcmp("off", &argv[argv[1]]))
  90.                 {
  91.                         if (!strcmp("1", &argv[argv[2]]))
  92.                         {
  93.                                 LED2_OFF();
  94.                         }else if (!strcmp("2", &argv[argv[2]]))
  95.                         {
  96.                                 LED3_OFF();
  97.                         }else
  98.                         {
  99.                                 shell_printf("useage: led [on/off] [1/2/3/4]\r\n");        
  100.                         }
  101.                         
  102.                 }else{
  103.                         shell_printf("useage: led [on/off] [1/2/3/4]\r\n");               
  104.                 }
  105.         }
  106. }

  107. void at24cxx_cmd(char argc, char *argv)
  108. {
  109.         if (argc > 1)
  110.         {        
  111.                 if (!strcmp("read", &argv[argv[1]]))
  112.                 {
  113.                                         I2C_RdDataFromAT24C();
  114.                 }else if (!strcmp("write", &argv[argv[1]]))
  115.                 {
  116.                     I2C_WrDataToAT24C();                        
  117.                 }else{
  118.                     shell_printf("useage: at24 [read/write] \r\n");               
  119.                 }
  120.         }else{
  121.                         shell_printf("useage: at24 [read/write] \r\n");
  122.                 }
  123. }
  124. NR_SHELL_CMD_EXPORT(at24, at24cxx_cmd);


  125. #ifdef NR_SHELL_USING_EXPORT_CMD
  126. NR_SHELL_CMD_EXPORT(ls, shell_ls_cmd);
  127. NR_SHELL_CMD_EXPORT(test, shell_test_cmd);
  128. NR_SHELL_CMD_EXPORT(led, shell_led_cmd);

  129. #else
  130. const static_cmd_st static_cmd[] =
  131.         {
  132.                 {"ls", shell_ls_cmd},
  133.                 {"test", shell_test_cmd},
  134.                 {"led", shell_led_cmd},
  135.                
  136.                 {"\0", NULL}
  137.         };         
  138. #endif

  139. /**
  140. * [url=home.php?mod=space&uid=555622]@prototype[/url] main(void)
  141. *
  142. * @param[in] void
  143. * @return         void
  144. *
  145. * @brief           main entry.
  146. *                         mainoˉêy.
  147. */
  148. int main(void)
  149. {
  150.         uint8_t ch;
  151.        
  152.         InitDelay();        //sysclk  Delay
  153.         InitDebug();         //Uart Debug printf
  154.        
  155.         //éè??LEDòy???aGPIOê?3?.
  156.         GPIO_SetDir(LED2_PORT, LED2_PIN, GPIO_OUT);
  157.         GPIO_SetDir(LED3_PORT, LED3_PIN, GPIO_OUT);
  158.        
  159.         I2C_InitHw();
  160.        
  161.        
  162.         elog_init();
  163.         shell_init();            /* nr_micro_shell*/
  164.        

  165.         while(1)
  166.         {
  167.                 if (UART_RxIsDataReady(UART2))
  168.         {
  169.             ch = UART_ReceiveData(UART2);
  170.                         shell(ch);
  171.         }
  172.         
  173.         }
  174. }

  175. /*************<end>********************/
复制代码
I2C程序:


  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("AutoChips Software") are
  4. * protected under relevant copyright laws. The information contained herein is
  5. * confidential and proprietary to AutoChips Inc. and/or its licensors. Without
  6. * the prior written permission of AutoChips inc. and/or its licensors,  any
  7. * reproduction,  modification,  use or disclosure of AutoChips Software,  and
  8. * information contained herein,  in whole or in part,  shall be strictly
  9. * prohibited.
  10. *
  11. * AutoChips Inc. (C) 2018. All rights reserved.
  12. *
  13. * BY OPENING THIS FILE,  RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  14. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("AUTOCHIPS SOFTWARE")
  15. * RECEIVED FROM AUTOCHIPS AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
  16. * ON AN "AS-IS" BASIS ONLY. AUTOCHIPS EXPRESSLY DISCLAIMS ANY AND ALL
  17. * WARRANTIES,  EXPRESS OR IMPLIED,  INCLUDING BUT NOT LIMITED TO THE IMPLIED
  18. * WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE OR
  19. * NONINFRINGEMENT. NEITHER DOES AUTOCHIPS PROVIDE ANY WARRANTY WHATSOEVER WITH
  20. * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
  21. * INCORPORATED IN,  OR SUPPLIED WITH THE AUTOCHIPS SOFTWARE,  AND RECEIVER AGREES
  22. * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
  23. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
  24. * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN AUTOCHIPS
  25. * SOFTWARE. AUTOCHIPS SHALL ALSO NOT BE RESPONSIBLE FOR ANY AUTOCHIPS SOFTWARE
  26. * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  27. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND AUTOCHIPS'S
  28. * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE AUTOCHIPS SOFTWARE
  29. * RELEASED HEREUNDER WILL BE,  AT AUTOCHIPS'S OPTION,  TO REVISE OR REPLACE THE
  30. * AUTOCHIPS SOFTWARE AT ISSUE,  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
  31. * CHARGE PAID BY RECEIVER TO AUTOCHIPS FOR SUCH AUTOCHIPS SOFTWARE AT ISSUE.
  32. */

  33. /*************<start>******************/


  34. /*************<include>****************/
  35. #include "i2c.h"

  36. /*************<macro>******************/
  37. #define AT24C02_DEV_ADDR                (0x50)


  38. /*************<enum>*******************/


  39. /*************<union>******************/


  40. /*************<struct>*****************/


  41. /*************<variable>***************/
  42. uint8_t g_wrAT24CDataBuf[9];
  43. uint8_t g_rdAT24CDataBuf[9];


  44. /*************<prototype>**************/


  45. /**
  46. * @prototype I2C_InitHw(void)
  47. *
  48. * @param[in] void
  49. * @return         void
  50. *
  51. * @brief           3?ê??ˉI2C.
  52. */
  53. void I2C_InitHw(void)
  54. {
  55.         I2C_ConfigType i2cConfig = {0};
  56.        
  57.         /*3?ê??ˉòy??1|?ü?aI2C.*/
  58.         GPIO_SetFunc(I2C0_SCL_PORT, I2C0_SCL_PIN, GPIO_FUN3);
  59.         GPIO_SetFunc(I2C0_SDA_PORT, I2C0_SDA_PIN, GPIO_FUN3);
  60.        
  61.         /*3?ê??ˉI2Cíaéè.*/
  62.         i2cConfig.masterConfigs.ARBEn         = ENABLE;/*éè???÷?ú?ù2?1|?ü.*/
  63.         i2cConfig.masterConfigs.SYNCEn        = ENABLE;/*éè???÷?úSCLí?2?1|?ü.*/
  64.         /*éè??2¨ì??ê?a100Kbps,bandrate = 24M / (10 * 12 * 2) = 100Kbps;*/
  65.         i2cConfig.masterConfigs.sampleCnt        = 9;
  66.         i2cConfig.masterConfigs.stepCnt                = 11;
  67.        
  68.         i2cConfig.slaveConfigs.addExtEn                = DISABLE;/*???üà??1μ??·.*/
  69.         i2cConfig.slaveConfigs.addRangeEn        = DISABLE;/*???ü·??§μ??·.*/
  70.         i2cConfig.slaveConfigs.monitorEn        = DISABLE;/*???ü′ó?ú?à2a1|?ü.*/
  71.         i2cConfig.slaveConfigs.stretchEn        = DISABLE;/*′ó?úSCL?óéì1|?ü.*/
  72.         i2cConfig.slaveConfigs.gcaEn                = DISABLE;/*′ó?úSCL1?2¥μ??·.*/
  73.         i2cConfig.slaveConfigs.wakeupEn                = DISABLE;/*??D?1|?ü,??′ó?úê±óDD§.*/
  74.         i2cConfig.slaveConfigs.RXFInterruptEn        = DISABLE;/*?óê??o′??ú?D??.*/
  75.         i2cConfig.slaveConfigs.RXOFInterruptEn        = DISABLE;/*?óê??o′?ò?3??D??.*/
  76.         i2cConfig.slaveConfigs.TXEInterruptEn        = DISABLE;/*·¢?í?o′????D??.*/
  77.         i2cConfig.slaveConfigs.TXUFInterruptEn        = DISABLE;/*·¢?í?o′?ò?3??D??.*/
  78.         i2cConfig.slaveConfigs.slaveAddress                = AT24C02_DEV_ADDR;/*′ó?úμ??·.*/
  79.         i2cConfig.slaveConfigs.slave7BitRangeAddress = 0;/*′ó?ú·??§μ??·.*/
  80.         i2cConfig.glitchFilterCnt        = 0;/*??′ì1y??.*/
  81.         i2cConfig.interruptEn                = DISABLE;/*I2Cè????D??.*/
  82.         i2cConfig.nackInterruptEn        = DISABLE;/*NACK?D??.*/
  83.         i2cConfig.ssInterruptEn                = DISABLE;/*×ü??start?òstop?D??.*/
  84.         i2cConfig.dmaRxEn                        = DISABLE;/*éè??DMA?óê?êy?Y.*/
  85.         i2cConfig.dmaTxEn                        = DISABLE;/*éè??DMA·¢?íêy?Y.*/
  86.         i2cConfig.mode                                = I2C_MASTER;/*éè???÷′ó?ú?£ê?.*/
  87.         i2cConfig.i2cEn                                = ENABLE;/*ê1?ü?£?é.*/
  88.         i2cConfig.callBack                        = NULL;/*?D????μ÷oˉêy.*/
  89.         I2C_Init(I2C0, &i2cConfig);
  90. }

  91. /**
  92. * @prototype I2C_WrDataToAT24C(void)
  93. *
  94. * @param[in] void
  95. * @return         void
  96. *
  97. * @brief           D′êy?Yμ?EEPROM.
  98. */
  99. void I2C_WrDataToAT24C(void)
  100. {
  101.         g_wrAT24CDataBuf[0] = 0x00;//D′è?μ??·
  102.         for (uint8_t ii = 0; ii < 8; ii++)
  103.         {
  104.                 g_wrAT24CDataBuf[ii + 1] = ii+10;
  105.                 printf("%02X ", g_wrAT24CDataBuf[ii + 1]);
  106.         }printf("\r\n");
  107.         I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 9, ENABLE);
  108. }

  109. /**
  110. * @prototype I2C_RdDataFromAT24C(void)
  111. *
  112. * @param[in] void
  113. * @return         void
  114. *
  115. * @brief           ′óEEPROM?áè?êy?Y.
  116. */
  117. void I2C_RdDataFromAT24C(void)
  118. {
  119.         g_wrAT24CDataBuf[0] = 0x00;//?áè?μ??·
  120.         I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 1, DISABLE);
  121.         I2C_MasterBurstRead (I2C0, AT24C02_DEV_ADDR, g_rdAT24CDataBuf, 8);
  122.         for (uint8_t ii = 0; ii < 8; ii++)
  123.         {
  124.                 printf("%02X ", g_rdAT24CDataBuf[ii]);
  125.         }
  126.         printf("\r\n");
  127. }


  128. /*************<end>********************/
复制代码



工程代码:
游客,如果您要查看本帖隐藏内容请回复

沙发
| 2020-6-17 10:52 | 只看该作者
先占下楼
板凳
| 2020-6-17 11:00 | 只看该作者
不错不错,这个很有用。
地板
| 2020-6-17 19:16 | 只看该作者
厉害了,学习学习
5
| 2020-6-18 13:17 | 只看该作者
做shell应该挺占空间吧
6
| 2020-6-18 14:38 | 只看该作者
学习一下
7
 楼主 | 2020-6-18 15:27 | 只看该作者
JasonLee27 发表于 2020-6-18 13:17
做shell应该挺占空间吧

这个还好,占用空间比较小。
8
| 2020-6-20 16:51 | 只看该作者
9
| 2020-6-28 14:28 | 只看该作者
很有用
10
| 2020-6-28 17:04 | 只看该作者
顶一个
11
| 2020-6-29 19:08 | 只看该作者
学习!
12
| 2020-6-29 20:20 | 只看该作者
谢谢分享,,,,,,
13
| 2020-6-30 20:04 | 只看该作者
高人
14
| 2020-7-1 08:09 | 只看该作者
看看
15
| 2020-7-3 21:01 | 只看该作者

不错不错,这个很有用
不错不错,这个很有用
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

禁止游客赌场登入 永利游戏开户直营 返回顶部 返回列表
从彩正规直营网 友誼棋牌 威尼斯人娱乐官网749登入 tb518通宝娱乐官网 澳门赌场有黑名单吗
必發开户优惠 美高梅游戏最高占成 伯爵娱乐彩票最高占成 太阳城时时彩导航 七彩娱乐佣金
乐虎国际注册送18最高占成 优博网址导航 澳门辉煌开户网站 盛大VIP提款保证5分钟内到帐 凯旋门快速登入
ptA及花牌登入 百发棋牌手机app 澳门永利直营官方赌场登入 澳门永利高管理网代理 拉斯维加斯棋牌天天洗码