其他分享
首页 > 其他分享> > CW MCU v11.1学习笔记1

CW MCU v11.1学习笔记1

作者:互联网

说明:通过处理器专家创建芯片为MC9S08DZ60的工程,按键控制LED

一、CW11.1软件界面布局

1、双击桌面图标,打开软件,设置工作空间

软件主界面

调试界面

处理器专家界面

有时经常调整(删除)面板布局,如果想恢复布局,可在Window工具栏下的Reset Perspective选项来复位面板布局

二、新建工程

1、在C/C++模式下,在Commander面板下点击New MCU project

2、创建一个裸板工程,设置工程名和存储路径(默认存储到工作空间),下一步

3、选择芯片型号

4、选择连接方式(程序调试下载方式)

5、选择编程语言

6、快速应用开发,处理器专家

7、C/C++选项

8、新建工程完成

三、底层配置

芯片具体型号选择(重要

1、时钟设置,使能外部时钟,设置时钟频率8MHz(根据硬件的晶振频率),高速时钟设置为外部时钟

2、生成软件延时函数

查看帮助文档

点击Component MC9S08DZ60_64 Methods

//    us100:word - Number of 100 us delay repetitions.

void Delay100US(word us100)


3、按键接口硬件电路

IO口 描述
PTG2 ESC
PTG3 DOWN
PTG4 OK
PTG5 UP

4、双击 BitIO,添加IO组件

Pull resister设置为 no pull resister ,因为按键电路已经有一个4.7K的上拉电阻,按键没按下IO口为高电平,按下为低电平。

生成函数GetVal();

重命名组件

5、重复相同步骤,设置另外三个按键组件

6、LED硬件电路,可以看出IO口输出低电平LED亮。

7、双击 BitIO,添加IO组件,步骤如上,方向为推挽输出,初始置为高电平

8、编译工程,生成代码。

四、编写中间件程序

1、新建文件夹

在SDK文件夹下新建源文件和头文件

在构建工程的时候,按模块分类文件夹,就存在需要包含头文件路径的问题。

选择C/C++General的Path and Symble,再选择GUN C。点击右边的 Add,点击Variables 选择ProjDirPath,在设置相应的文件路径。

2、编写代码

KeyCtr.h


#ifndef KEYCTR_H_
#define KEYCTR_H_

#include "KeyEsc.h"
#include "KeyDown.h"
#include "KeyOk.h"
#include "KeyUp.h"

#define 	KEYDOWN 		0

#define   	Get_KeyEsc()   	KeyEsc_GetVal()
#define   	Get_KeyDown()   KeyDown_GetVal()
#define   	Get_KeyOk()   	KeyOk_GetVal()
#define   	Get_KeyUp()   	KeyUp_GetVal()



#endif /* KEYCTR_H_ */

KeyCtr.c


#include "KeyCtr.h"

LedCtr.h

#ifndef LEDCTR_H_
#define LEDCTR_H_

#include "Led1.h"
#include "Led2.h"
#include "Led3.h"
#include "Led4.h"

#define ON 	0
#define OFF 1

void Led1_onoff(bool onoff);
void Led2_onoff(bool onoff);
void Led3_onoff(bool onoff);
void Led4_onoff(bool onoff);


#endif /* LEDCTR_H_ */

LedCtr.c

#include "LedCtr.h"



void Led1_onoff(bool onoff)
{
	Led1_PutVal(onoff);
}

void Led2_onoff(bool onoff)
{
	Led3_PutVal(onoff);
}

void Led3_onoff(bool onoff)
{
	Led3_PutVal(onoff);
}

void Led4_onoff(bool onoff)
{
	Led4_PutVal(onoff);
}



五、建立应用层

1、新建文件夹

2、添加路径,新建文件(步骤如上)

3、代码编写

Task1.h

#ifndef TASK1_H_
#define TASK1_H_

#include "LedCtr.h"
#include "KeyCtr.h"

void task1(void);


#endif /* TASK1_H_ */

Task1.c



#include "Task1.h"

void task1(void)
{
	if( KEYDOWN==Get_KeyEsc() )
	{
		Led1_onoff(ON);
	}
	else
	{
		Led1_onoff(OFF);
	}
	
	if( KEYDOWN==Get_KeyDown() )
	{
		Led2_onoff(ON);
	}
	else
	{
		Led2_onoff(OFF);
	}
	
	if( KEYDOWN==Get_KeyOk() )
	{
		Led3_onoff(ON);
	}
	else
	{
		Led3_onoff(OFF);
	}
	
	if( KEYDOWN==Get_KeyUp() )
	{
		Led4_onoff(ON);
	}
	else
	{
		Led4_onoff(OFF);
	}
	Cpu_Delay100US(100);//10ms
	
}

Working.h

#ifndef WORKING_H_
#define WORKING_H_

#include "Task1.h"

void runing(void);

#endif /* WORKING_H_ */

Working.c

#include "Working.h"


void runing(void)
{
	for(;;)
	{
		
		task1();
		
	}
}

4、主函数编写

5、编译,调试下载

 

 

标签:Get,void,define,bool,v11.1,MCU,include,CW,onoff
来源: https://blog.csdn.net/qq_31676021/article/details/106642595