ZLG键盘数码管键盘Word下载.docx
- 文档编号:21173761
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:24
- 大小:1.08MB
ZLG键盘数码管键盘Word下载.docx
《ZLG键盘数码管键盘Word下载.docx》由会员分享,可在线阅读,更多相关《ZLG键盘数码管键盘Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
2.分析和学习固件库
3.灵活运用ZLG7290
1.3实验时间
60分钟
1.4预备知识
熟悉C语言知识,熟练MDK的使用
1.5实验步骤
1.解压stm32f10x_stdperiph_lib.zip可以从ST官方网站免费下载(在实验包里已经下载好)。
本教程使用的标准库版本为3.1.2.
2.创建一个ZLG_Key文件夹
2.1新建子文件夹User,用于存放用户源程序
2.2新建子文件夹Project,用户KEIL工程文件
2.3在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。
3.复制源代码到ZLG_Key文件夹
3.1将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2\Libraries文件夹和Utilities文件夹整体复制到ZLG_Key文件夹下。
这就是ST的标准库,是以源代码形式提供的。
3.2将库中的演示代码KeyDisplay\User中的文件i2c_zlg7290.h和stm32f10x_conf.h和i2c_zlg7290.c复制到ZLG_Key\User文件夹.
4.新建KeilMDK工程
4.1启动KeilMDK,点击菜单NewuVisionProject,
新建一个工程,命名为ZLG_Key在Project文件夹下
4.2选择CPU类型为STM32F107VC(这是MDV-STM32-107开发板采用的CPU类型)
4.3当提示是否复制启动代码时,请选择否。
(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)
4.4根据自己的需要修改Target名字。
(名字任意)我们修改成ZLG_Key。
4.5为了便于代码管理,在这个Project下创建几个Group如下图:
User:
存放用户自己写的源代码
RVMDK:
存放启动文件(汇编文件)
StdPeriph_Driver:
存放ST标准库外设驱动文件
CMSIS:
存放CMSIS接口文件(这也是库的一部分)
STM32_EVAL存放板集设备驱动文件
4.6创建好Group后,我们开始依次添加文件。
4.6.1给User文件夹添加文件
将ZLG_Key\User文件加下的i2c_zlg7290.c添加到工程。
4.6.2给RVMDK文件夹添加文件
启动文件路径:
\ZLG_Key\Libraries\CMSIS\Core\CM3\startup\arm
4.6.3给stdPeriph_Driver文件夹添加文件
设备驱动文件路径:
\ZLG_Key\Libraries\STM32F10x_StdPeriph_Driver\src
4.6.4给CMSIS文件夹添加文件
CMSIS接口文件路径:
\ZLG_Key\Libraries\CMSIS\Core\CM3
4.6.4给STM32_EVAL文件夹添加文件
STM32_EVAL接口文件路径:
\ZLG_Key\GPIO\Utilities\STM32_EVAL和\ZLG_Key\GPIO\Utilities\STM32_EVAL\STM3210C_EVAL
下面开始新建main.c主函数文件,点击file菜单的中的newfile如下图所示,然后将新建的文件以main.c问文件名保存到User文件加下,然后再添加到工程User分组中。
添加好文件的工程如下图所示:
5.修改源代码。
我们将修改main.c文件,换成下面的程序。
/**
******************************************************************************
*@fileI2C/ZLG7290/main.c
*@authorSunxue
*@versionV1.1.0
*@date12/02/2012
*@briefMainprogrambody
*@copy
*
*THEPRESENTFIRMWAREWHICHISFORGUIDANCEONLYAIMSATPROVIDINGCUSTOMERS
*WITHCODINGINFORMATIONREGARDINGTHEIRPRODUCTSINORDERFORTHEMTOSAVE
*TIME.ASARESULT,STMICROELECTRONICSSHALLNOTBEHELDLIABLEFORANY
*DIRECT,INDIRECTORCONSEQUENTIALDAMAGESWITHRESPECTTOANYCLAIMSARISING
*FROMTHECONTENTOFSUCHFIRMWAREAND/ORTHEUSEMADEBYCUSTOMERSOFTHE
*CODINGINFORMATIONCONTAINEDHEREININCONNECTIONWITHTHEIRPRODUCTS.
*<
h2>
<
center>
&
copy;
COPYRIGHT2009STMicroelectronics<
/center>
/h2>
*/
/*Includes------------------------------------------------------------------*/
#include"
i2c_zlg7290.h"
stm32f10x.h"
stm3210c_eval_lcd.h"
stm32_eval.h"
#include<
stdio.h>
/**@addtogroupSTM32F10x_StdPeriph_Examples
*@{
*/
/**@addtogroupI2C_ZLG7290
/*Privatevariables---------------------------------------------------------*/
/*ResetValue*/
uint8_tTx0_Instr[]={0xf0,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x03,0x00,0x00};
/*0-9negativecommon*/
uint8_tTx0_Ram0_7[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
/*ReadNumfromZlg*/
uint8_tRx0_Num[]={0x00,0x00,0x00};
/*Privatefunctions---------------------------------------------------------*/
voidRCC_Configuration(void);
*@briefMainprogram
*@paramNone
*@retvalNone
intmain(void)
{
/*Systemclocksconfiguration---------------------------------------------*/
RCC_Configuration();
/*InitializetheLCD*/
STM3210C_LCD_Init();
/*CleartheLCD*/
LCD_Clear(White);
/*SettheLCDTextColor*/
LCD_SetTextColor(Blue);
printf("
KeyTest\n"
);
IICZLG7290Test\n"
/*InitializetheI2CZLG7290driver----------------------------------------*/
I2C_ZLG_Init();
//I2C_ZLG_BufferWrite(Tx0_Instr,0x00,0x04);
//I2C_ZLG_BufferWrite(&
Tx0_Instr[7],0x07,0x02);
/*SetFlashOnOffandScanNum*/
I2C_ZLG_BufferWrite(&
Tx0_Instr[12],0x0c,0x02);
/*SetDpRam0toDpRam3*/
I2C_ZLG_BufferWrite(Tx0_Ram0_7,0x10,0x04);
/*DisplayKeyValue*/
PassbyOn!
\n"
KeyValueis:
00\n"
while
(1)
{/*TestINT*/
if(!
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15))
{/*ReadKeyValueFromSystemRegKeyRepetCnt*/
I2C_ZLG_BufferRead(Rx0_Num,0x00,0x03);
/*WriteToDpRam2*/
I2C_ZLG_ByteWrite(&
Tx0_Ram0_7[Rx0_Num[1]/10],0x12);
/*WriteToDpRam3*/
Tx0_Ram0_7[Rx0_Num[1]%10],0x13);
/*DisplayKeyValue*/
printf("
%d%d\n"
Rx0_Num[1]/10,Rx0_Num[1]%10);
}
}
}
*@briefConfiguresthedifferentsystemclocks.
voidRCC_Configuration(void)
/*Setupthemicrocontrollersystem.InitializetheEmbeddedFlashInterface,
initializethePLLandupdatetheSystemFrequencyvariable.*/
SystemInit();
#ifdefUSE_FULL_ASSERT
*@briefReportsthenameofthesourcefileandthesourcelinenumber
*wheretheassert_paramerrorhasoccurred.
*@paramfile:
pointertothesourcefilename
*@paramline:
assert_paramerrorlinesourcenumber
voidassert_failed(uint8_t*file,uint32_tline)
{
/*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,
ex:
Wrongparametersvalue:
file%sonline%d\r\n"
file,line)*/
/*Infiniteloop*/
{
#endif
*@}
/*******************(C)COPYRIGHT2012STMicroelectronics*****ENDOFFILE****/
6.配置工程,点击“Options”按钮
6.1切换到Output。
选择Obj文件夹。
6.2切换带Listing。
选择List文件夹
6.3切换到Target在CodeGeneration的UseMicroLIB前打钩,如下图所示。
6.4切换到C/C++
Ø
添加两个预编译宏USE_STDPERIPH_DRIVER,STM32F10X_CL,USE_STM3210C_EVAL,LCD_Debug(这是ST库用到了这两个宏)
修改Includes路径
6.5切换到Debug
选择硬件调试器(缺省是软件仿真),我们选择Cortex-M/RJ-LINK/J-Trace调试器
在Runtomain前打钩
6.6切换到Utilities
选额调试器类型,我们选择Cortex-M/RJ-LINK/J-Trace
点settings按钮,添加Flash编程算法,我们选择STM32连接型器件,Flash容量256K字节
7.配置工程完毕。
下面开始编译。
8.编译OK,点击LOAD下载到STM32的Flash中按开发板Reset键开始运行或者断开电源重启一下便可看到如下图现象。
9.教程结束。
1.6结论
1.7问题
1、简述如何通过春指令操作达到此更能
2、简述怎么配置I2C寄存器
3、简述如何让LED数码数码动态显示数据
4、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ZLG 键盘 数码管