X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
编程基础
[讨论] 只为uC而生,uS成长历程 15
辛昕
2013-8-15 00:03
楼主
今晚改变了一些顺序
比如先写日记,再写uS,早先的时间仍然是另外一个任务
现在每天晚上大概都只能做两件事而已。
其实,我从十点半开始转入考虑uS,中间花去大概40分钟洗澡加写日记。
所以,接下来,我首先把画好的 uSConsole和Apper的交互关系图,然后还要尽量实现第一部分。
在 uSConsole中向外部发送数据,因为接口涉及到 超时,还要给uS加入 公共库,实现起来也许略带复杂,今晚可能无法完成。
好了,先上图!
点赞
回复评论 (7)
沙发
辛昕
第一步,我们就体会到了之前在Timer上做的努力的成效
在我得到上面一幅图时,实际上,我仍然不是十分清楚如何植入这一部分。
然而我考虑到既然我已经实现了第一个TimerIsr,那么很自然的,我只需要用类似的方法,去植入就好了。
于是我采用类似的方法,在uS中的相应部分,首先试着加入 初始化部分。
并用它取代我 昨天测试用的 在 main函数里直接加入 的 串口初始化函数。
这个过程非常简单,而且也很小步,很安全。
而且实现的非常快,试一下串口功能,仍然正常,真棒!
点赞
2013-8-15 00:10
板凳
辛昕
WOW,快1点了。
如前所述,我基本完成了 把 发送做进uS里。
然后,也对上一个帖子时做的 初始化函数做了一些改动。
这个时候,我开始注意到,uSer里那个uSCore模块需要改名字了
它应该叫做uSTimer更恰当
这是因为
我把uSConsole单独做成另一个模块,这是恰当的。
事实上,它和uSCore也就是以后将改名为uSTimer的模块 共同构成uSCore
其实uSCore 这个逻辑结构部件的存在并不是非要一个模块命名来标示。
这个话题我们稍后讨论
今晚老规矩,我将现有代码 贴上来,在下一个帖子
在这里,我需要一个略有点奇怪的问题
不知道为什么,当我在uS里发出 测试用的 信息
“Hello!uS-v0.2"时,我发现 主函数里的 “This is uS-v0.2”发不出了
然而,我关掉前一句,它又正常了
从直觉来看
我认为这不是代码的关系,可能是某种操作上的或者是串口发送的延迟之类的?
总之我初步判断不是 uS的实现问题。
点赞
2013-8-15 01:00
4楼
辛昕
uS里新增加的 uSConsole模块
#ifndef _US_CONSOLE_
#define _US_CONSOLE_
#include "typedef.h"
typedef struct
{
void (*uSConsoleRegist)(void);
void (*uSConsole_SendString)(U8 *Buffer,U8 BuffLen);
}uSConsoleStr;
void uSConsoleStr_Initial(uSConsoleStr *Str);
void uSConsoleStr_Copy(uSConsoleStr *Dest,uSConsoleStr *Src);
void uSConsole_TestInitial(void (*pSendString)(U8 *Buffer,U8 BuffLen));
void uSConsole_Test(void);
#endif
#include "uSConsole.h"
#include "typedef.h"
#include "CommonMacro.h"
#include
#include "uSRegister.h"
#define TEST_STRING "Hello,uSConsole!"
void uSConsoleStr_Initial(uSConsoleStr *Str)
{
Str->uSConsoleRegist = NULL;
Str->uSConsole_SendString = NULL;
}
void uSConsoleStr_Copy(uSConsoleStr *Dest,uSConsoleStr *Src)
{
Dest->uSConsoleRegist = Src->uSConsoleRegist;
Dest->uSConsole_SendString = Src->uSConsole_SendString;
}
//==============================================================================
static void (*uSConsoleSend_TestFunc)(U8 *Buffer,U8 BuffLen) = NULL;
void uSConsole_TestInitial(void (*pSendString)(U8 *Buffer,U8 BuffLen))
{
if(pSendString != NULL)
uSConsoleSend_TestFunc = pSendString;
}
void uSConsole_Test(void)
{
if(uSConsoleSend_TestFunc != NULL)
uSConsoleSend_TestFunc(TEST_STRING,sizeof(TEST_STRING));
}
// end of file -----------------------------------------------------------------
[
本帖最后由 辛昕 于 2013-8-15 01:06 编辑
]
点赞
2013-8-15 01:01
5楼
辛昕
加入uSRegister模块(看加粗字体)
typedef struct
{
uSCore_RegistStruct uSCoreReg;
uSCore_PosterStruct uSCorePoster;
uSConsoleStr uSConsoleReg;
}uS_Struct;
void uS_StructInitial(uS_Struct *Str)
{
uSCore_Regist_Init(&(Str->uSCoreReg));
uSCore_Poster_Init(&(Str->uSCorePoster));
uSConsoleStr_Initial(&(Str->uSConsoleReg));
}
void uSRegist(uS_Struct *Str)
{
uS_StructInitial(&uSRegister);
uSCore_RegistStruct_Copy(&(uSRegister.uSCoreReg),&(Str->uSCoreReg));
uSConsoleStr_Copy(&(uSRegister.uSConsoleReg),&(Str->uSConsoleReg));
// Initial TimerInterrupt;
(*(Str->uSCoreReg.TimerInitial))();
[
本帖最后由 辛昕 于 2013-8-15 01:05 编辑
]
点赞
2013-8-15 01:03
6楼
辛昕
到了uS_App里事情更加简单,我们只需改变两行代码
void uS_Initializer(void)
{
uS_StructInitial(&uSRegistStr);
uSRegistStr.uSCoreReg.TimerInitial = Timer_Initial;
uSRegistStr.uSCoreReg.Led_4_Test = uCGpio_Toggle;
uSRegistStr.uSConsoleReg.uSConsoleRegist = Uart2_Initial;
uSRegistStr.uSConsoleReg.uSConsole_SendString = Uart2_SendString;
uSRegist(&uSRegistStr);
// insert uSer to Apper
set_uSTimerIsr(uSRegistStr.uSCorePoster.TimerTask);
}
点赞
2013-8-15 01:04
7楼
辛昕
晚安!
点赞
2013-8-15 01:06
8楼
重邮king
抢个沙发,顶一个!
点赞
2013-8-15 03:03
最新活动
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
随便看看
9b96的enet_lwip例程问题
eVC中有这样一个bug:当您使用 CWnd 类版本的 GetDC 方法和 ReleaseDC 方法 BUG: 内存泄漏。 如果打了SP4补丁,此问题是否修复?
WinCE中断应用
大家好!高人过来出个主意呀!
请问如何使用AM335x实现PTP协议,硬件支持单没有软件支持啊
msp430f5529双路输出pwm波
MSP430修改中断优先级
请问YL 2440的BIOS程序谁调试过?
博士论文-分布式实时系统的调度和通讯研究
进程查询的终止条件
STM32F407停机模式下不能通过外部中断唤醒
驱动中使用__try快的链接错误问题
Windows Mobile 鼠标问题
串口到以太网透明传输模块
德州仪器助力“互联网汽车”荣威RX5打造创新型数字化驾驶体验
LPC1114F样片申请
为什么使用DC-DC转换器应尽可能靠近负载的负载点(POL)电源?
IROM启动方式出问题
EEWORLD大学堂----240A 6相PMBus降压转换器设计开箱介绍
张鸣鸣:我的经历告诉我Web2.0将以个性引领产 品
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复