• DSP TMS320F28335按键实现流水灯样式


    欢迎使用Markdown编辑器写博客

    本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:

    Markdown和扩展Markdown简洁的语法
    代码块高亮
    图片链接和图片上传
    LaTex数学公式
    UML序列图和流程图
    离线写博客
    导入导出Markdown文件
    丰富的快捷键

    快捷键

    加粗 Ctrl + B
    斜体 Ctrl + I
    引用 Ctrl + Q
    插入链接 Ctrl + L
    插入代码 Ctrl + K
    插入图片 Ctrl + G
    提升标题 Ctrl + H
    有序列表 Ctrl + O
    无序列表 Ctrl + U
    横线 Ctrl + R
    撤销 Ctrl + Z
    重做 Ctrl + Y

    Markdown及扩展

    Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

    使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

    本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.
    表格

    Markdown Extra 表格语法:
    项目 价格
    Computer $1600
    Phone $12
    Pipe $1

    可以使用冒号来定义对齐方式:
    项目 价格 数量
    Computer 1600 元 5
    Phone 12 元 12
    Pipe 1 元 234
    定义列表

    Markdown Extra 定义列表语法: 项目1 项目2
    定义 A
    定义 B 项目3
    定义 C

    定义 D

    定义D内容

    代码块

    代码块语法遵循标准markdown代码,例如:

    @requires_authorization
    def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
    print 'Greater'
    return (param2 - param1 + 1) or None
    class SomeClass:
    pass
    >>> message = '''interpreter
    ... prompt'''

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    脚注

    生成一个脚注1.
    目录

    用 [TOC]来生成目录:

    欢迎使用Markdown编辑器写博客
    快捷键
    Markdown及扩展
    表格
    定义列表
    代码块
    脚注
    目录
    数学公式
    UML 图:
    离线写博客
    浏览器兼容

    数学公式

    使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.

    行内公式,数学公式为:Γ(n)=(n−1)!∀n∈N


    块级公式:

    x=−b±b2−4ac−−−−−−−√2a

    更多LaTex语法请参考 这儿.
    UML 图:

    可以渲染序列图:
    张三 张三 李四 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说: 忙得吐血,哪有时间写。

    或者流程图:
    开始 我的操作 确认? 结束 yes
    no

    关于 序列图 语法,参考 这儿,
    关于 流程图 语法,参考 这儿.

    离线写博客

    即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

    用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

    博客发表后,本地缓存将被删除。 

    用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

    注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。

    浏览器兼容


    #include "DSP2833x_Device.h" // DSP2833x 头文件
    #include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件


    #define S1 GpioDataRegs.GPADAT.bit.GPIO12
    #define S2 GpioDataRegs.GPADAT.bit.GPIO13
    #define S3 GpioDataRegs.GPADAT.bit.GPIO14
    // 使用前,声明本文件中的相关函数;
    void delay_loop(void);
    void Gpio_select(void);
    void Scan_Key(void);
    void D();
    void LED();
    void LE();


    Uint32 direction;
    void main(void)
    {

    InitSysCtrl();


    Gpio_select();

    DINT;

    InitPieCtrl();


    IER = 0x0000;
    IFR = 0x0000;

    InitPieVectTable();


    // 步骤 5. 用户特定的代码

    GpioDataRegs.GPBDAT.all =0x00000000;
    GpioDataRegs.GPCDAT.all =0x00000000;
    for(;;) //等待中断发生 可以说是给它一直循环
    {
    Scan_Key();
    }
    }

    void D(void)
    {
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x20000000;//GPIO60为0,灯亮 GPIO61,64,65,66,67,68输出清1,使LED1灯灭
    GpioDataRegs.GPCDAT.all =0x0000001f;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x10000000;//GPIO61为0,灯亮,60,64,65,66,67,68输出清1,使LED1灯灭
    GpioDataRegs.GPCDAT.all =0x0000001f;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001e;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001d;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001b;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x00000017;


    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000000f;

    delay_loop();
    }


    void LED()
    {

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000000f;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x00000017;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001b;


    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001d;
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001e;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x10000000;//GPIO61为0,灯亮,60,64,65,66,67,68输出清1,使LED1灯灭
    GpioDataRegs.GPCDAT.all =0x0000001f;
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x20000000;//GPIO60为0,灯亮 GPIO61,64,65,66,67,68输出清1,使LED1灯灭
    GpioDataRegs.GPCDAT.all =0x0000001f;

    }

    void LE()
    {

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x20000000;//GPIO60为0,灯亮 GPIO61,64,65,66,67,68输出清1,使LED1灯灭
    GpioDataRegs.GPCDAT.all =0x0000001f;
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001e;
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001b;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000000f;
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x10000000;//GPIO61为0,灯亮,60,64,65,66,67,68输出清1,使LED1灯灭
    GpioDataRegs.GPCDAT.all =0x0000001f;
    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x0000001d;

    delay_loop();
    GpioDataRegs.GPBDAT.all =0x30000000;
    GpioDataRegs.GPCDAT.all =0x00000017;


    }

    void Scan_Key(void)
    {
    Uint32 i,j;
    if(S1==0)//扫描是否按键按下
    {
    for(i=0;i<10000;i++); //键盘消抖动
    if(S1==0) //再次确认是否按下
    {
    D();
    direction+=1; //方向数加一
    for(i=0;i<32;i++)
    for (j = 0; j < 100000; j++) {}


    if(direction%2!=0) //第一按下按键LED停止闪烁,下次按下时LED又开始闪烁
    {
    while(S1!=0);
    }


    }
    }

    if(S2==0)//扫描是否按键按下
    {
    for(i=0;i<10000;i++); //键盘消抖动
    if(S2==0) //再次确认是否按下
    {
    LED();
    direction+=1; //方向数加一
    for(i=0;i<32;i++)
    for (j = 0; j < 100000; j++) {}


    if(direction%2!=0) //第一按下按键LED停止闪烁,下次按下时LED又开始闪烁
    {
    while(S2!=0);
    }


    }
    }

    if(S3==0)//扫描是否按键按下
    {
    for(i=0;i<10000;i++); //键盘消抖动
    if(S3==0) //再次确认是否按下
    {
    LE();
    direction+=1; //方向数加一
    for(i=0;i<32;i++)
    for (j = 0; j < 100000; j++) {}


    if(direction%2!=0) //第一按下按键LED停止闪烁,下次按下时LED又开始闪烁
    {
    while(S3!=0);
    }


    }
    }
    }
    void delay_loop()
    {
    Uint32 i;
    Uint32 j;
    for(i=0;i<32;i++)
    for (j = 0; j < 100000; j++) {}
    }
    //GPIO初始化函数
    void Gpio_select(void)
    {


    EALLOW;
    GpioCtrlRegs.GPAMUX1.all = 0x00000000; // All GPIO //输入引脚
    GpioCtrlRegs.GPAMUX2.all = 0x00000000; // All GPIO
    GpioCtrlRegs.GPBMUX1.all = 0x00000000; // All GPIO
    GpioCtrlRegs.GPBMUX2.all = 0x00000000; // All GPIO
    GpioCtrlRegs.GPCMUX1.all = 0x00000000; // All GPIO
    GpioCtrlRegs.GPCMUX2.all = 0x00000000; // All GPIO


    GpioCtrlRegs.GPADIR.all = 0x00000000; // All outputs //输出引脚
    GpioCtrlRegs.GPBDIR.all = 0xFFFFFFFF; // All outputs
    GpioCtrlRegs.GPCDIR.all = 0xFFFFFFFF; // All outputs

    EDIS;

    }
    //===========================================================================
    // No more.
    //===========================================================================

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247

    目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
    IE9以下不支持
    IE9,10,11存在以下问题
    不支持离线功能
    IE9不支持文件导入导出
    IE10不支持拖拽文件导入


    原文链接:https://blog.csdn.net/qq_42767726/article/details/81946305

    作者:柒月
    Q群 :2122210(嵌入式/机器学习)
  • 相关阅读:
    Java Stream 流(JDK 8 新特性)
    Java EnumMap 实现类
    Java 设计模式
    Java lambda 表达式详解(JDK 8 新特性)
    Java forEach 方式遍历集合(Java 8 新特性)
    Java 单例设计模式
    Java public 和 private 访问修饰符
    == 、equals 、hashcode
    String
    ClassLoader 的分类及加载顺序
  • 原文地址:https://www.cnblogs.com/Ph-one/p/14597673.html
Copyright © 2020-2023  润新知