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(嵌入式/机器学习)
原文地址:https://www.cnblogs.com/Ph-one/p/14597673.html