社区
单片机/工控
帖子详情
28335中使用SCI的FIFO中断接收数据,匹配值为1,总共4113个数据,为什么中断4115次?
refine19
2011-12-07 10:44:45
如题,使用全局变量在中断中自增,最后得到的值是4115次,另外,在中断中修改布尔变量flag = 1,在外边使用while(flag == 0)跳不出循环?
...全文
380
2
打赏
收藏
28335中使用SCI的FIFO中断接收数据,匹配值为1,总共4113个数据,为什么中断4115次?
如题,使用全局变量在中断中自增,最后得到的值是4115次,另外,在中断中修改布尔变量flag = 1,在外边使用while(flag == 0)跳不出循环?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
refine19
2011-12-08
打赏
举报
回复
呵呵,谢谢楼上的,果然是这样,我又细查了一下vlolatile的用法:
不加volatile的话编译器对代码的优化就会导致中断中的全局变量值不发生变化。
当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。
一般说来,volatile用在如下的几个地方:
1、并行设备的硬件寄存器
2、一个中断服务子程序中的会访问到的非自动变量(全局变量)
3、多线程应用中被几个人物共享的变量
youzi722
2011-12-07
打赏
举报
回复
是C么,声明时把flag变量volatile一下就不会跳不出循环了
Linux系统编程第05期:进程间通信
Linux系统提供了各种系统调用API用于进程之间的通信: 无名管道PIPE 命名管道
FIFO
消息队列 共享内存 信号量 文件锁 信号signal....其
中
还包括system V和POSIX 两种接口标准,除此之外,Linux系统自身还扩展了自己的一套API接口用于进程间通信,比如signalfd、timerfd、eventfd等。本视频教程为《Linux系统编程》第05期,本期课程将会带领大家学习Linux下将近15种进程间通信IPC工具的
使用
,了解它们的通信机制、编程实例、
使用
场景、内核
中
的实现以及各自的优缺点。本课程会提供PDF版本的PPT课件和代码,学员购买课程后可到课程主页自行下载嵌入式自学路线指导图:------------------------------------------------------------------------------------------------------ 《嵌入式工程师自我修养》嵌入式自学系列教程 作者:王利涛------------------------------------------------------------------------------------------------------一线嵌入式工程师精心打造,嵌入式学习路线六步走: 第 1 步:Linux三剑客零基础玩转Linux+UbuntuGit零基础实战:Linux开发技能标配vim从入门到精通基础篇:零基础学习vim基本命令vim从入门到精通定制篇:
使用
插件打造嵌入式开发IDEmakefile工程实践基础篇:从零开始一步一步写项目的Makefilemakefile工程实践第2季:
使用
Autotools自动生成Makefile软件调试基础理论printf打印技巧Linux内核日志与打印
使用
QEMU搭建u-boot+Linux+NFS嵌入式开发环境第 2 步:C语言嵌入式Linux高级编程第1期:C语言进阶学习路线指南第2期:计算机架构与ARM汇编程序设计第3期:程序的编译、链接和运行原理第4期:堆栈内存管理第6期:
数据
存储与指针第7期:嵌入式
数据
结构与Linux内核的OOP思想第8期:C语言的模块化编程第9期:CPU和操作系统入门 搞内核驱动开发、光会C语言是不行的! 你还需要学习的有很多,包括:计算机体系架构、ARM汇编、程序的编译链接运行原理、CPU和操作系统原理、堆栈内存管理、指针、linux内核
中
的面向对象思想、嵌入式系统架构、C语言的模块化编程.....第 3 步:Linux系统编程第00期:Linux系统编程入门第01期:揭开文件系统的神秘面纱第02期:文件I/O编程实战第03期:I/O缓存与内存映射第04期:打通进程与终端的任督二脉第05期:进程间通信-------------------we are here! 第 4 步:Linux内核编程 练乾坤大挪移,会不会九阳神功,是一道坎。搞驱动内核开发,懂不懂内核也是一道坎。第 5 步:嵌入式驱动开发 芯片原理、datasheet、硬件电路、调试手段、总线协议、内核机制、框架流程....第 6 步:项目实战 嵌入式、嵌入式人工智能、物联网、智能家居...
DSPF
28335
SCI
FIFO
串口通讯
在工作过程
中
,通过串口进行上位机与控制器之间进行
数据
的传输,标准的串口通讯容易造成
数据
的丢失和内存堆满的现象,便
使用
SCI
中
的
FIFO
对
数据
进行
中
断
处理。
关于DSP与DSP之间通过
SCI
异步通讯
最近在调试TMS320F2812的
SCI
异步串口通讯时,一块DSP用于传输
数据
,另一块DSP用于
接收
数据
,为节省DSP开销,采用
FIFO
中
断
的方式进行
数据
传输,波特率设置为115200bps,每包
数据
传输8个字节,实际传输过程
中
会出现发送
FIFO
队列的首个
数据
字buffer【0】对应的不是接收
FIFO
队列的首个
数据
字,导致DSP无法对接收到的
数据
进行有效处理。 由于
FIFO
队列有16级
F2837xD串行通信接口模块
SCI
SCI
模块的特点包括:两个外部引脚:-
SCI
TXD:
SCI
传输输出引脚-
SCI
RXD:
SCI
接收输入引脚如果不用于
SCI
,这两个引脚都可以用作GPIO。•波特率可编程到64K不同速率•
数据
字格式-一个开始位-
数据
字长度可编程从1到8位-可选偶/奇/无校验位-一个或两个停止位-额外位区分地址和
数据
(仅限地址位模式)•四个错误检测标志:奇偶校验、溢出、帧和
中
断
检测•两种唤醒多处理器模式:空闲线和地址位•半或全双工操作•双缓冲接收和发射功能。
DSP开发:串口
sci
的发送与接收实现
LSPCLK(低速外设时钟)的频率为 37.5MHz,
SCI
的分频因子为 8(由于设置了
SCI
HBAUD 和
SCI
LBAUD 分别为高8位和低8位),所以分频后的
SCI
时钟频率为 37.5MHz / 8 = 4.6875MHz。这段代码实现了串口
SCI
(串行通信接口)的初始化以及向串口发送
数据
的功能,并且通过函数重定向,将标准库的输出函数重定向到串口
SCI
上,实现了通过类似于标准库的 printf 函数的格式化字符串向串口
SCI
发送
数据
的功能。:用于存储接收到的字符串的字符数组,初始值全部为0。
单片机/工控
27,375
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章