HML_FwLib_STC89使用笔记(单片机课程补充资料)
【摘要】 HML_FwLib_STC89适用于Linux和Windows,并且可以直接全功能支持STC89C52RC等芯片全部功能,并非如keil4的<reg52.h>或sdcc中<8052.h>的基本功能。
先看一段示例,如下程序符合现在主流的编程规范:
/**************************************************...
HML_FwLib_STC89适用于Linux和Windows,并且可以直接全功能支持STC89C52RC等芯片全部功能,并非如keil4的<reg52.h>或sdcc中<8052.h>的基本功能。
先看一段示例,如下程序符合现在主流的编程规范:
-
/*****************************************************************************
-
* 头文件 *
-
*****************************************************************************/
-
#include "hml/hml.h"
-
/*****************************************************************************
-
* 初始化 *
-
*****************************************************************************/
-
void sys_init(void)
-
{
-
UART_configTypeDef uc;
-
-
uc.baudrate = 9600;
-
uc.baudGenerator = PERIPH_TIM_2;
-
uc.interruptState = DISABLE;
-
uc.interruptPriority = UTIL_interruptPriority_0;
-
uc.mode = UART_mode_1;
-
uc.multiBaudrate = DISABLE;
-
uc.receiveState = ENABLE;
-
-
UART_config(&uc);
-
enableAllInterrupts();
-
}
-
/*****************************************************************************
-
* 主函数 *
-
*****************************************************************************/
-
void main(void)
-
{
-
sys_init();
-
while(true)
-
{
-
/* send per 1000ms */
-
sleep(1000);
-
UART_sendString("Welcome to Changshu Institute of Technology.\r\n");
-
/* send per 1000ms */
-
sleep(1000);
-
UART_sendString("Let us start the MCU learning journey together.\r\n");
-
}
-
}
编译和下载:
- make -j
- stcgal -P stc89 output.ihx
- 或者(stcgal -P stc89 output.hex)与上面一条指令效果相同
程序功能每间隔1s,发送:
- Welcome to Changshu Institute of Technology.
- Let us start the MCU learning journey together.
使用串口工具看看效果吧:
在usr直接使用make -j编译即可使用,生成ihx和hex均可下载:
先编译:
再下载:
支持stc89系列芯片如下:
-
#define MCU_MODEL_GENERIC 0x01
-
#define MCU_MODEL_STC89C51RC 0x02
-
#define MCU_MODEL_STC89LE51RC 0x03
-
#define MCU_MODEL_STC89C52RC 0x04
-
#define MCU_MODEL_STC89LE52RC 0x05
-
#define MCU_MODEL_STC89C53RC 0x06
-
#define MCU_MODEL_STC89LE53RC 0x07
-
#define MCU_MODEL_STC89C54RDP 0x08
-
#define MCU_MODEL_STC89LE54RDP 0x09
-
#define MCU_MODEL_STC89C58RDP 0x0A
-
#define MCU_MODEL_STC89LE58RDP 0x0B
-
#define MCU_MODEL_STC89C510RDP 0x0C
-
#define MCU_MODEL_STC89LE510RDP 0x0D
-
#define MCU_MODEL_STC89C512RDP 0x0E
-
#define MCU_MODEL_STC89LE512RDP 0x0F
-
#define MCU_MODEL_STC89C514RDP 0x10
-
#define MCU_MODEL_STC89LE514RDP 0x11
-
#define MCU_MODEL_STC89C516RDP 0x12
-
#define MCU_MODEL_STC89LE516RDP 0x13
默认为STC89C51RC,11.0592Mhz,12。
-
/**
-
* \brief configure clock frequency of MCU
-
*/
-
#ifndef __CONF_FRE_CLKIN
-
#warning no specified clock frequency, HML will fill it with 11.0592MHz
-
#define __CONF_FRE_CLKIN 11059200UL
-
#endif
-
-
/**
-
* \brief configure prescaler of MCU
-
*
-
* \note in order to switch 6T/12T mode successfully, user must also do related
-
* operations via select option inside official <stc-isp> software and restart
-
* MCU. Otherwise, user can't observe expected phenomenon.
-
*/
-
#ifndef __CONF_MCU_PRESCALER
-
#warning no specified MCU prescaler, HML will fill it with 12(12T mode)
-
#define __CONF_MCU_PRESCALER 12
-
#endif
-
-
/**
-
* \brief configure module of MCU
-
*/
-
#ifndef __CONF_MCU_MODEL
-
#warning no specified MCU model, HML will fill it with STC89C52RC
-
#define __CONF_MCU_MODEL MCU_MODEL_STC89C52RC
-
#endif
GPIO直接支持0-4:
-
typedef enum
-
{
-
PERIPH_GPIO_0 = 0x0,
-
PERIPH_GPIO_1 = 0x1,
-
PERIPH_GPIO_2 = 0x2,
-
PERIPH_GPIO_3 = 0x3,
-
PERIPH_GPIO_4 = 0x4
-
} PERIPH_GPIO;
全面的寄存器信息:
-
/* BYTE Register */
-
__sfr __at (0x8E) AUXR ;
-
__sfr __at (0xA2) AUXR1 ;
-
__sfr __at (0xA9) SADDR1 ;
-
__sfr __at (0xB7) IPH ;
-
__sfr __at (0xC0) XICON ;
-
__sfr __at (0xC8) T2CON ;
-
__sfr __at (0xC9) T2MOD ;
-
__sfr __at (0xCA) RCAP2L ;
-
__sfr __at (0xCB) RCAP2H ;
-
__sfr __at (0xCC) TL2 ;
-
__sfr __at (0xCD) TH2 ;
-
__sfr __at (0xE1) WDT_CONTR ;
-
__sfr __at (0xE2) ISP_DATA ;
-
__sfr __at (0xE3) ISP_ADDRH ;
-
__sfr __at (0xE4) ISP_ADDRL ;
-
__sfr __at (0xE5) ISP_CMD ;
-
__sfr __at (0xE6) ISP_TRIG ;
-
__sfr __at (0xE7) ISP_CONTR ;
-
__sfr __at (0xE8) P4 ;
-
-
/* BIT Register */
-
/* IE */
-
__sbit __at (0xAD) ET2 ;
-
-
/* IP */
-
__sbit __at (0xBD) PT2 ;
-
-
/* P1 */
-
__sbit __at (0x90) T2 ; /* AFIO */
-
__sbit __at (0x91) T2EX ; /* AFIO */
-
-
/* P4 */
-
__sbit __at (0xE8) P4_0 ;
-
__sbit __at (0xE9) P4_1 ;
-
__sbit __at (0xEA) P4_2 ;
-
__sbit __at (0xEB) P4_3 ;
-
-
__sbit __at (0xEA) INT3 ;
-
__sbit __at (0xEB) INT2 ;
-
-
/* T2CON */
-
__sbit __at (0xC8) CPRL2 ;
-
__sbit __at (0xC9) T2_CT ;
-
__sbit __at (0xCA) TR2 ;
-
__sbit __at (0xCB) EXEN2 ;
-
__sbit __at (0xCC) TCLK ;
-
__sbit __at (0xCD) RCLK ;
-
__sbit __at (0xCE) EXF2 ;
-
__sbit __at (0xCF) TF2 ;
-
-
/* XICON */
-
__sbit __at (0xC0) IT2 ;
-
__sbit __at (0xC1) IE2 ;
-
__sbit __at (0xC2) EX2 ;
-
__sbit __at (0xC3) PX2 ;
-
__sbit __at (0xC4) IT3 ;
-
__sbit __at (0xC5) IE3 ;
-
__sbit __at (0xC6) EX3 ;
-
__sbit __at (0xC7) PX3 ;
-
-
/* BIT number for bits that are not directly accessible */
-
/* AUXR bits */
-
#define BIT_NUM_ALEOFF 0
-
#define BIT_NUM_EXTRAM 1
-
-
/* AUXR1 bits */
-
#define BIT_NUM_DPS 0
-
#define BIT_NUM_GF2 3
-
-
/* IPH bits */
-
#define BIT_NUM_PX0H 0
-
#define BIT_NUM_PT0H 1
-
#define BIT_NUM_PX1H 2
-
#define BIT_NUM_PT1H 3
-
#define BIT_NUM_PSH 4
-
#define BIT_NUM_PT2H 5
-
#define BIT_NUM_PX2H 6
-
#define BIT_NUM_PX3H 7
-
-
/* ISP_CMD bits */
-
#define BIT_NUM_MS0 0
-
#define BIT_NUM_MS1 1
-
#define BIT_NUM_MS2 2
-
-
/* ISP_CONTR bits */
-
#define BIT_NUM_WT0 0
-
#define BIT_NUM_WT1 1
-
#define BIT_NUM_WT2 2
-
#define BIT_NUM_SWRST 5
-
#define BIT_NUM_SWBS 6
-
#define BIT_NUM_ISPEN 7
-
-
/* PCON bits */
-
#define BIT_NUM_IDL 0
-
#define BIT_NUM_PD 1
-
#define BIT_NUM_GF0 2
-
#define BIT_NUM_GF1 3
-
#define BIT_NUM_POF 4
-
#define BIT_NUM_SMOD0 6
-
#define BIT_NUM_SMOD 7
-
-
/* T2MOD bits */
-
#define BIT_NUM_DCEN 0
-
#define BIT_NUM_T2OE 1
-
-
/* TMOD bits */
-
#define BIT_NUM_T0_M0 0
-
#define BIT_NUM_T0_M1 1
-
#define BIT_NUM_T0_CT 2
-
#define BIT_NUM_T0_GATE 3
-
#define BIT_NUM_T1_M0 4
-
#define BIT_NUM_T1_M1 5
-
#define BIT_NUM_T1_CT 6
-
#define BIT_NUM_T1_GATE 7
-
-
/* WDT_CONTR bits */
-
#define BIT_NUM_PS0 0
-
#define BIT_NUM_PS1 1
-
#define BIT_NUM_PS2 2
-
#define BIT_NUM_IDLE_WDT 3
-
#define BIT_NUM_CLR_WDT 4
-
#define BIT_NUM_EN_WDT 5
-
-
/* BIT definitions for bits that are not directly accessible */
-
/* AUXR bits */
-
#define ALEOFF BIT_MASK(BIT_NUM_ALEOFF)
-
#define EXTRAM BIT_MASK(BIT_NUM_EXTRAM)
-
-
/* AUXR1 bits */
-
#define DPS BIT_MASK(BIT_NUM_DPS) /* DPTR register select bit */
-
#define GF2 BIT_MASK(BIT_NUM_GF2)
-
-
/* IPH bits */
-
#define PX0H BIT_MASK(BIT_NUM_PX0H)
-
#define PT0H BIT_MASK(BIT_NUM_PT0H)
-
#define PX1H BIT_MASK(BIT_NUM_PX1H)
-
#define PT1H BIT_MASK(BIT_NUM_PT1H)
-
#define PSH BIT_MASK(BIT_NUM_PSH)
-
#define PT2H BIT_MASK(BIT_NUM_PT2H)
-
#define PX2H BIT_MASK(BIT_NUM_PX2H)
-
#define PX3H BIT_MASK(BIT_NUM_PX3H)
-
-
/* ISP_CMD bits */
-
#define MS0 BIT_MASK(BIT_NUM_MS0)
-
#define MS1 BIT_MASK(BIT_NUM_MS1)
-
#define MS2 BIT_MASK(BIT_NUM_MS2)
-
-
/* ISP_CONTR bits */
-
#define WT0 BIT_MASK(BIT_NUM_WT0)
-
#define WT1 BIT_MASK(BIT_NUM_WT1)
-
#define WT2 BIT_MASK(BIT_NUM_WT2)
-
#define SWRST BIT_MASK(BIT_NUM_SWRST)
-
#define SWBS BIT_MASK(BIT_NUM_SWBS)
-
#define ISPEN BIT_MASK(BIT_NUM_ISPEN)
-
-
/* PCON bits */
-
#define POF BIT_MASK(BIT_NUM_POF)
-
#define SMOD0 BIT_MASK(BIT_NUM_SMOD0)
-
-
/* T2MOD bits */
-
#define DCEN BIT_MASK(BIT_NUM_DCEN)
-
#define T2OE BIT_MASK(BIT_NUM_T2OE)
-
-
/* WDT_CONTR bits */
-
#define PS0 BIT_MASK(BIT_NUM_PS0)
-
#define PS1 BIT_MASK(BIT_NUM_PS1)
-
#define PS2 BIT_MASK(BIT_NUM_PS2)
-
#define IDLE_WDT BIT_MASK(BIT_NUM_IDLE_WDT)
-
#define CLR_WDT BIT_MASK(BIT_NUM_CLR_WDT)
-
#define EN_WDT BIT_MASK(BIT_NUM_EN_WDT)
-
-
/* Interrupt numbers: address = (number * 8) + 3 */
-
#define TF2_VECTOR 5 /* 0x2b timer 2 */
-
#define IE2_VECTOR 6 /* 0x33 external interrupt 2 */
-
#define IE3_VECTOR 7 /* 0x3B external interrupt 3 */
-
-
#endif
更多详细内容,参考HML_FwLib_STC89源码。
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/109196577
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)