12
返回列表 发新帖
楼主: zico1998

[CodeWarrior] CW使用中的一些小总结

[复制链接]
  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-3-26 09:59:47 | 显示全部楼层
    本帖最后由 zico1998 于 2015-3-26 10:11 编辑

    (8)WORD边栏分层
    在侧边栏,点哪条目录,对应正文就跳到哪里。这个功能让DOC文档文件更容易查找。
    其实这个制作很简单:
    视图文档结构图
    在正文处,右键/格式段落大纲级别
    (嗯,不忙了,再介绍下CHM电子书的使用,很棒的软件)
    222.JPG
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-3-26 10:00:29 | 显示全部楼层
    谢谢楼上三位
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-3-26 10:10:13 | 显示全部楼层
    (9)查看内存
    比如我FLASH写入第11扇区内容,字符串123,那么怎么知道写进去没有呢?
    硬件仿真,然后如图,点那个绿色+号,输入你的扇区地址。
    比如我KL25Z4的128的,大小0-0x0001FFFF(131071),分128个扇区,一个扇区就是131072/128=1024。注意,前5扇区存程序的,不能用。
    我第11扇区就是0x2c00(11264)首地址的。
    222.JPG
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-3-26 10:18:47 | 显示全部楼层
    (10)联合体的应用
    联合体在数据类型变换时很有用。比如uint32变成uint8、uchar的,或者反之。
    而且,CW平台对联合体、结构体提示显示很好(KEIL MDK5就不能),何乐而不为?

    在.h头文件里
    typedef union _undemo0
    {
    uint32 un32;
    uint16 un16[2];
        uint8 un8[4];
    }undemo0;
    extern undemo0 m_undemo0;

    在.c文件里
    undemo0 m_undemo0;

    m_undemo0.un32=0x876544321;   

    观察un16、un8的变化,当.un32=0x87654321,则.un16[0]=0x4321,un16[1]=0x8765,则.un8[0]=0x21,un8[1]=0x43,un8[2]=0x65,un8[3]=0x87
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-3-26 10:41:15 | 显示全部楼层
    (11)按照状态来分析按键程序
       按下按键,可以分四个步骤:之前没按且现在没按,之前没按且现在按下,之前按下且现在也按下,之前按下且现在松开。然后按照不同阶段,分配不同任务。
       这就是单片机里一个很重要的思想:过程与步骤量。几乎所有的单片机项目都可以按照这个思路去编程。

       static key.scan t_key;   //定义一个静态的结构体对象,含flag、port。。。也可以直接定义这两变量
        t_key.port=... //读端口状态
        if(t_key.flag==0 && t_key.port==0)  //之前没按下,现在也没按下
        {
            _nop_();
        }
        else if(t_key.flag==0 && t_key.port==1) //之前没按下,现在按下
        {
            t_key.flag=1;
        }   
        else if(t_key.flag==1 && t_key.port==1) //之前按下,现在也按下
        {
            _nop_();
        }
        else if(t_key.flag==1 && t_key.port==0)  //之前按下,现在没按下
        {
            t_key.flag=0;
        }   
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13128
    最后登录
    2019-1-27
    发表于 2015-3-30 15:02:19 | 显示全部楼层
    发现楼主又更新了
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2019-9-17 17:18
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    26

    主题

    394

    帖子

    0

    高级会员

    Rank: 4

    积分
    967
    最后登录
    2019-10-9
    发表于 2015-3-30 15:32:27 | 显示全部楼层
    很不错,占一个
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-4-1 08:19:51 | 显示全部楼层
    (12)FLASH操作
    具体代码见王宜怀老师的KL25书籍内容,不过要在操作FLASH前后,加关、开总中断。
    测试结果是,写一次后,不能在原地址再写了,只能擦除后写。(题外话,当然最好是偏移地址,把整页写满再擦除比较实惠)
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-4-1 20:33:41 | 显示全部楼层
    (14)CW里结构体成员函数的使用

    //一个用于结构体里的自增函数
    //而在结构体里,把该类型函数的指针作为一个成员。
    //在一些平台里,因为是函数,所以使用code区域,因此要在结构体定义时候要加关键字const(C51里是关键字code)
    uint8 demo11_fun1(uint32 *x)
    {
        (*x)++;
        if(100<=(*x))
        {
            (*x)=0;     
        }     
        return 0;
    }
    //结构体成员函数测试
    //一个结构体
    typedef struct _studemo11
    {
        uint32 a;  //自增量   
        const uint8 (*fun1)(uint32 *x);   //自增   
        //const为修饰不可改变值得变量,只能读取      
    }studemo11;

    //测试函数11
    //在主程序循环里调用
    void m_demo11(void)
    {
        static uint8 t_init=0;
        static studemo11 t_stu11;
        uint8 t_cnt;
        if(0==t_init)  //初始化
        {     
            t_stu11.a=0;      
            t_init=1;         
        }
        else
        {
            t_stu11.fun1=demo11_fun1(&t_stu11.a);     
        }        
    }
    我今天最想说
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 10:53 , Processed in 0.102915 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表