• DSP CCS12.00 芯片:TMS320F28335 映射的区域的流水灯LED 加上蜂鸣器的使用


    1.首先添加文件  V101\DSP2833x_common\source\DSP2833x_Xintf

      在我之前给的资源里面含有!(V101)

    这个.c 文件添加到 res 新建文件夹里面。

    在之前的建立工程的基础上


    2.我们需要运用一个新的函数  InitXintf();

    他的功能:定义映射区域的代码:

    InitXintf.c

    1. // TI File $Revision: /main/5 $
    2. // Checkin $Date: August 16, 2007 11:06:26 $
    3. //###########################################################################
    4. //
    5. // FILE: DSP2833x_Xintf.c
    6. //
    7. // TITLE: DSP2833x Device External Interface Init & Support Functions.
    8. //
    9. // DESCRIPTION:
    10. //
    11. // Example initialization function for the external interface (XINTF).
    12. // This example configures the XINTF to its default state. For an
    13. // example of how this function being used refer to the
    14. // examples/run_from_xintf project.
    15. //
    16. //###########################################################################
    17. // $TI Release: DSP2833x Header Files V1.01 $
    18. // $Release Date: September 26, 2007 $
    19. //###########################################################################
    20. #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
    21. #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
    22. //---------------------------------------------------------------------------
    23. // InitXINTF:
    24. //---------------------------------------------------------------------------
    25. // This function initializes the External Interface the default reset state.
    26. //
    27. // Do not modify the timings of the XINTF while running from the XINTF. Doing
    28. // so can yield unpredictable results
    29. void InitXintf(void)
    30. {
    31. // This shows how to write to the XINTF registers. The
    32. // values used here are the default state after reset.
    33. // Different hardware will require a different configuration.
    34. // For an example of an XINTF configuration used with the
    35. // F28335 eZdsp, refer to the examples/run_from_xintf project.
    36. // Any changes to XINTF timing should only be made by code
    37. // running outside of the XINTF.
    38. // All Zones---------------------------------
    39. // Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT
    40. EALLOW;
    41. XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
    42. // No write buffering
    43. XintfRegs.XINTCNF2.bit.WRBUFF = 0;
    44. // XCLKOUT is enabled
    45. XintfRegs.XINTCNF2.bit.CLKOFF = 0;
    46. // XCLKOUT = XTIMCLK/2
    47. XintfRegs.XINTCNF2.bit.CLKMODE = 1;
    48. // Zone 0------------------------------------
    49. // When using ready, ACTIVE must be 1 or greater
    50. // Lead must always be 1 or greater
    51. // Zone write timing
    52. XintfRegs.XTIMING0.bit.XWRLEAD = 3;
    53. XintfRegs.XTIMING0.bit.XWRACTIVE = 7;
    54. XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
    55. // Zone read timing
    56. XintfRegs.XTIMING0.bit.XRDLEAD = 3;
    57. XintfRegs.XTIMING0.bit.XRDACTIVE = 7;
    58. XintfRegs.XTIMING0.bit.XRDTRAIL = 3;
    59. // double all Zone read/write lead/active/trail timing
    60. XintfRegs.XTIMING0.bit.X2TIMING = 1;
    61. // Zone will sample XREADY signal
    62. XintfRegs.XTIMING0.bit.USEREADY = 1;
    63. XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous
    64. // Size must be either:
    65. // 0,1 = x32 or
    66. // 1,1 = x16 other values are reserved
    67. XintfRegs.XTIMING0.bit.XSIZE = 3;
    68. // Zone 6------------------------------------
    69. // When using ready, ACTIVE must be 1 or greater
    70. // Lead must always be 1 or greater
    71. // Zone write timing
    72. XintfRegs.XTIMING6.bit.XWRLEAD = 3;
    73. XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
    74. XintfRegs.XTIMING6.bit.XWRTRAIL = 3;
    75. // Zone read timing
    76. XintfRegs.XTIMING6.bit.XRDLEAD = 3;
    77. XintfRegs.XTIMING6.bit.XRDACTIVE = 7;
    78. XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
    79. // double all Zone read/write lead/active/trail timing
    80. XintfRegs.XTIMING6.bit.X2TIMING = 1;
    81. // Zone will sample XREADY signal
    82. XintfRegs.XTIMING6.bit.USEREADY = 1;
    83. XintfRegs.XTIMING6.bit.READYMODE = 1; // sample asynchronous
    84. // Size must be either:
    85. // 0,1 = x32 or
    86. // 1,1 = x16 other values are reserved
    87. XintfRegs.XTIMING6.bit.XSIZE = 3;
    88. // Bank switching
    89. // Assume Zone 6 is slow, so add additional BCYC cycles
    90. // when ever switching from Zone 6 to another Zone.
    91. // This will help avoid bus contention.
    92. XintfRegs.XBANK.bit.BANK = 6;
    93. XintfRegs.XBANK.bit.BCYC = 6;
    94. // Zone 7------------------------------------
    95. // When using ready, ACTIVE must be 1 or greater
    96. // Lead must always be 1 or greater
    97. // Zone write timing
    98. XintfRegs.XTIMING7.bit.XWRLEAD = 3;
    99. XintfRegs.XTIMING7.bit.XWRACTIVE = 7;
    100. XintfRegs.XTIMING7.bit.XWRTRAIL = 3;
    101. // Zone read timing
    102. XintfRegs.XTIMING7.bit.XRDLEAD = 3;
    103. XintfRegs.XTIMING7.bit.XRDACTIVE = 7;
    104. XintfRegs.XTIMING7.bit.XRDTRAIL = 3;
    105. // double all Zone read/write lead/active/trail timing
    106. XintfRegs.XTIMING7.bit.X2TIMING = 1;
    107. // Zone will sample XREADY signal
    108. XintfRegs.XTIMING7.bit.USEREADY = 1;
    109. XintfRegs.XTIMING7.bit.READYMODE = 1; // sample asynchronous
    110. // Size must be either:
    111. // 0,1 = x32 or
    112. // 1,1 = x16 other values are reserved
    113. XintfRegs.XTIMING7.bit.XSIZE = 3;
    114. // Bank switching
    115. // Assume Zone 7 is slow, so add additional BCYC cycles
    116. // when ever switching from Zone 6 to another Zone.
    117. // This will help avoid bus contention.
    118. // XintfRegs.XBANK.bit.BANK = 7;
    119. // XintfRegs.XBANK.bit.BCYC = 7;
    120. EDIS;
    121. //Force a pipeline flush to ensure that the write to
    122. //the last register configured occurs before returning.
    123. InitXintf16Gpio();
    124. // InitXintf32Gpio();
    125. asm(" RPT #7 || NOP");
    126. }
    127. void InitXintf32Gpio()
    128. {
    129. EALLOW;
    130. GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 3; // XD31
    131. GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 3; // XD30
    132. GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 3; // XD29
    133. GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 3; // XD28
    134. GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 3; // XD27
    135. GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 3; // XD26
    136. GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 3; // XD25
    137. GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 3; // XD24
    138. GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 3; // XD23
    139. GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 3; // XD22
    140. GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3; // XD21
    141. GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3; // XD20
    142. GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3; // XD19
    143. GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3; // XD18
    144. GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 3; // XD17
    145. GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 3; // XD16
    146. GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 3; // XD31 asynchronous input
    147. GpioCtrlRegs.GPBQSEL2.bit.GPIO49 = 3; // XD30 asynchronous input
    148. GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 3; // XD29 asynchronous input
    149. GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 3; // XD28 asynchronous input
    150. GpioCtrlRegs.GPBQSEL2.bit.GPIO52 = 3; // XD27 asynchronous input
    151. GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 3; // XD26 asynchronous input
    152. GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // XD25 asynchronous input
    153. GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // XD24 asynchronous input
    154. GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // XD23 asynchronous input
    155. GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // XD22 asynchronous input
    156. GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // XD21 asynchronous input
    157. GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; // XD20 asynchronous input
    158. GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; // XD19 asynchronous input
    159. GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3; // XD18 asynchronous input
    160. GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // XD17 asynchronous input
    161. GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3; // XD16 asynchronous input
    162. InitXintf16Gpio();
    163. }
    164. void InitXintf16Gpio()
    165. {
    166. EALLOW;
    167. GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3; // XD15
    168. GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 3; // XD14
    169. GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3; // XD13
    170. GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3; // XD12
    171. GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 3; // XD11
    172. GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3; // XD10
    173. GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 3; // XD19
    174. GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3; // XD8
    175. GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 3; // XD7
    176. GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3; // XD6
    177. GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3; // XD5
    178. GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3; // XD4
    179. GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3; // XD3
    180. GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3; // XD2
    181. GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3; // XD1
    182. GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3; // XD0
    183. GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // XA0/XWE1n
    184. GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // XA1
    185. GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // XA2
    186. GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // XA3
    187. GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // XA4
    188. GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // XA5
    189. GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // XA6
    190. GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // XA7
    191. GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3; // XA8
    192. GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3; // XA9
    193. GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 3; // XA10
    194. GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3; // XA11
    195. GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3; // XA12
    196. GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13
    197. GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14
    198. GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15
    199. GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16
    200. GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17
    201. GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18
    202. GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19
    203. GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY
    204. GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW
    205. GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0
    206. GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0
    207. GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7
    208. GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6
    209. EDIS;
    210. }
    211. //===========================================================================
    212. // No more.
    213. //===========================================================================

    3.我们的实验代码:

    我们加上蜂鸣器模块,蜂鸣器是 p60 引脚控制。

    蜂鸣器是高电平 发出响声!

    LED灯是低电平点亮!

    实验功能:实验流水灯的效果:并且每亮一个灯,我们的蜂鸣器就响一下!

    代码:

    1. #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
    2. #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
    3. /****************端口宏定义*****************/
    4. #define LED *((Uint16 *)0x4600)
    5. const Uint16 LedCode[9]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0XFF};
    6. /****************函数声明*******************/
    7. void Gpio_select(void); //gpio端口配置子程序
    8. void delay_loop(void);
    9. void main(void)
    10. {
    11. InitSysCtrl();
    12. Gpio_select();
    13. DINT;
    14. InitPieCtrl();
    15. IER = 0x0000;
    16. IFR = 0x0000;
    17. InitPieVectTable();
    18. InitXintf();
    19. LED=0x00;//全亮
    20. for(;;)
    21. {
    22. unsigned int i=0;
    23. for(i=0;i<8;i++)
    24. {
    25. LED=LedCode[i];
    26. delay_loop();
    27. }
    28. }
    29. }
    30. void delay_loop()
    31. {
    32. Uint32 i;
    33. Uint32 j;
    34. GpioDataRegs.GPBSET.bit.GPIO60=1;//设置GPIO60输出高电平 高电平响
    35. for(i=0;i<40;i++)
    36. {
    37. for (j = 0; j < 100000; j++);
    38. }
    39. GpioDataRegs.GPBCLEAR.bit.GPIO60 = 1; //设置GPIO60输出为低电平
    40. for(i=0;i<40;i++)
    41. {
    42. for (j = 0; j < 100000; j++);
    43. }
    44. }
    45. void Gpio_select(void)
    46. {
    47. EALLOW;
    48. GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 00; // GPIO44为GPIO功能
    49. GpioCtrlRegs.GPBDIR.bit.GPIO44 = 1; // GPIO44为输出功能
    50. GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 00; // GPIO45为GPIO功能
    51. GpioCtrlRegs.GPBDIR.bit.GPIO45 = 1; // GPIO45为输出功能
    52. GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 00; // GPIO51为GPIO功能
    53. GpioCtrlRegs.GPBDIR.bit.GPIO51 = 1; // GPIO51为输出功能
    54. GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 00; // GPIO53为GPIO功能
    55. GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1; // GPIO53为输出功能
    56. GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 00; // GPIO56为GPIO功能
    57. GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; // GPIO56为输出功能
    58. GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 00; // GPIO60为GPIO功能
    59. GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1; // GPIO60为输出功能
    60. GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 00; // GPIO72为GPIO功能
    61. GpioCtrlRegs.GPCDIR.bit.GPIO72 = 1; // GPIO72为输出功能
    62. GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 00; // GPIO77为GPIO功能
    63. GpioCtrlRegs.GPCDIR.bit.GPIO77 = 1; // GPIO77为输出功能
    64. EDIS;
    65. }
    66. //===========================================================================
    67. // No more.
    68. //===========================================================================

    4.实验结论:

    本次实验:映射区域的LED 灯 不可以用普通的代码实现!

    普通代码:就是引脚初始化!  再定义高低电平!


    5.最后的实物图片:

     


    6.知识的巩固!

    GPIO端口设置如下:

    代码:

    1. void InitGpio(void) //初始化GPIO
    2. {
    3. EALLOW;
    4. //-----------------------------------------------------------------------------------
    5. GpioCtrlRegs.GPBMUX1.all = 0xFFFFFFF0; // 配置 GPIO32-33为I/O口
    6. // 配置 GPIO34 for XREADY 就绪
    7. // 配置 GPIO35 for XR/W 读
    8. // 配置 GPIO36 for XZCS0 片选
    9. // 配置 GPIO37 for XZCS7 片选
    10. // 配置 GPIO38 for XWE0
    11. // 配置 GPIO39 for XA16 地址
    12. // 配置 GPIO40 for XA0
    13. // 配置 GPIO41 for XA1
    14. // 配置 GPIO42 for XA2
    15. // 配置 GPIO43 for XA3
    16. // 配置 GPIO44 for XA4
    17. // 配置 GPIO45 for XA5
    18. // 配置 GPIO46 for XA6
    19. // 配置 GPIO47 for XA7
    20. GpioCtrlRegs.GPCMUX1.all = 0xFFFFFFFF; // 配置 GPIO64-GPIO79 for XD15-XD0 数据
    21. GpioCtrlRegs.GPCMUX2.all = 0xFFFFFFFF; // 配置 GPIO80-GPIO87 for XA8-XA15 地址
    22. // GpioCtrlRegs.GPBDIR.all = 0xE0000000; // GPIO32-GPIO60 为输入
    23. GpioCtrlRegs.GPCDIR.all = 0x00000000; // GPI064-GPIO95 为输入
    24. //----------------------------------------------------------------------------------------
    25. GpioCtrlRegs.GPAPUD.all = 0x0100; // 内部上拉 GPIO0-GPIO31
    26. GpioCtrlRegs.GPBPUD.all = 0x0000; // 内部上拉 GPIO32-GPIO63
    27. GpioCtrlRegs.GPCPUD.all = 0x0000; // 内部上拉 GPIO64-GPIO79
    28. EDIS;
    29. }



  • 相关阅读:
    【SpringCloud】负载均衡
    第64步 深度学习图像识别:多分类建模误判病例分析(Pytorch)
    SpringBoot 常见注解
    用户角色权限、按钮控制功表及返回数据格式
    如何用看板工具做轻量级项目管理
    不吃早餐对你有害吗?为你揭示惊人的真相
    什么是Web组件(Web Components)?它们的主要部分有哪些?
    基于Java+SpringBoot+Vue前后端分离库存管理系统设计和实现
    不花冤枉钱~希喂、小米、霍尼韦尔宠物空气净化器性价比之战!
    卷麻了,00后测试用例写的比我还好,简直无地自容......
  • 原文地址:https://blog.csdn.net/she666666/article/details/126947710