由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UART,OLED(IIC),MPU6050,内容涵盖了硬件和软件部分。鉴于笔者水平有限和能力不足,文中有不到之处还请看者多包涵。先贴一张peripheral图,MSP430的外部引脚及其复用功能都可在图里查到。

一·外部中断

  外部中断的操作方式与GPIO一样是使用寄存器操作,所以学习相关的寄存器是不可避免的,不过MSP430的寄存器不算太多,操作外部中断主要要用到以下寄存器:

1.PxIV 中断向量表(字),P1端口的中断函数入口地址应该都放在里面,只是一个地址;

2.PxIE 中断使能寄存器,相应引脚位置1表示允许产生中断;置0表示该引脚不产生中断;

3.PxIES 中断触发方式选择寄存器,相应引脚位置1表示下降沿触发,置0表示上升沿触发;

4.PxIFG 中断标志,由于MSP430的中断使能需要使能总中断,所以仅当总中断GIE和中断使能寄存器PxIE都打开后,PxIFG高电平表示有中断请求等待待响应,等中断服务函数结束时需要软件清该标志位;

  这些寄存在TI的msp430f5xx_6xxgeneric.h头文件有如下定义

下面看一个外部中断程序,所用引脚为P2.1,对应MSP430F5529火箭板的板载按键S1,初始化为下降沿触发

  1. void EXTI_Init()
  2. {
  3. /*按键中断*/
  4. P2IE |= BIT1; //P2.1中断使能
  5. P2IES |= BIT1; //设置为下降沿触
  6. P2IFG &= ~BIT1; //清中断标志位
  7. P2REN |= BIT1; //上拉电阻
  8. P2OUT |= BIT1; //初始化置高
  9. }
  10. /*中断服务函数*/
  11. #pragma vector=PORT2_VECTOR
  12. __interrupt void P2_ISR(void)
  13. {
  14. if(P2IFG & BIT1)
  15. {
  16. delay(2); //延时2ms消抖动
  17. /*这里是函数算法部分*/
  18. }
  19. P2IFG &=~BIT1; //清空中断标志
  20. }

二·定时器

MSP430的定时器资源还算丰富,共有两类共四个寄存器,分别是3个TimerA和1TimerB,由于我对TimerA使用较多,所以本文着重来讲TimerA,三个TimerA分别为Timer0_A(5个捕获/比较寄存器),Timer1_A(3个捕获/比较寄存器),Timer2_A(3个捕获/比较寄存器),下面是TimerA的结构图

我们结合TimerA的寄存器讲解一下这张图

上半部分是整个定时器的基础,整个上半部分可通过TACTL控制寄存器来编程,从功能角度来讲从左往右分别是,自身时钟源配置TASSEL,第一次分频选择ID,定时器清零位TACLR,计数值存放寄存器TAR,工作模式控制位MC,中断标志位TAIFG以及没有在结构图出现的定时器中断使能TAIE。

上图为TACTL寄存器各个位的功能,TACTL是一个16bit寄存器,是TA类定时器的控制寄存器,在程序中对定时器进行初始化会经常用到,我会简略的说一下各个寄存器的功能和可选的模式有哪些,具体详细作用还请参考官方手册

TASSEL 通过更改TASSEL所在位可选4个时钟任一作为当前计数器的时钟源,其中常用的是TASSEL_1 ACLK(32768Hz)以及TASSEL_2 SMCLK(1.045MHz);

IDx 分频可选1,2,4,8分频;

TACLR 定时器清零位,置位会复位寄存器;

TAIE 定时器中断使能,置1后允许中断,同样的使能中断还是需要开启总中断GIE;

TAIFG 中断标志位,该位为1表示有中断发生

定时器的基础配置通过TACTL寄存器就可以完成,但其工作模式还得依靠另一个寄存器TAxCCRx

接下来我们来看定时器的下半部分即捕获/比较控制寄存器TACCTL

TACCTL寄存器也是16bit的寄存器,是定时器实现各种捕获功能的重要寄存器,这个寄存器我们按位来理解它的用法,下面只贴出了我认为比较常用和重要的位的作用,

CMx 捕获模式设定 CM_1上升沿捕获,CM_2下降沿捕获,CM_3上升和下降沿捕获;

CCISx 捕获源选择,00为外部引脚作为捕获源,01为内部信号,配合CMx可做外部编码器输入捕获;

SCS 同步捕获源,是否与时钟同步捕获,为默认值就可;

CAP 0-比较模式,1-捕获模式;

OUTMOD 输出模式控制位,其中MOD2和MOD7可用作PWM波输出;

CCIE 中断允许,这个位是用来允许相应的通道产生中断的,并允许相应标志位CCIFG产生中断请求;

CCIFG 捕获/比较中断标志位,为1表示有中断挂起,定时器中断不需要软件清标志位

到这里定时器的初始化和功能配置已经介绍完毕,就差定时器计数溢出产生中断,而这个中断向量的入口地址存在中断向量字TAIV里,总的来说,通过配置TAxCTL和TACCTLx寄存器就可以完成MSP430的A类定时器的大部分功能,下面举PWM输出例子和定时中断例子

        PWM输出

TA(A类定时器)的每个捕获/比较器都有一个输出口,这个输出口可以在定时器工作在特定输出模式时输出不同的信号,当定时器工作在OUTMOD2或者OUTMOD7时,输出口可输出PWM波,下面介绍一下MOD2和MOD7

MOD2 : 翻转/复位输出模式,当定时器计数到TACCRx值时,输出翻转,当定时器技术到TACCR0时,输出复位,显然CCR0寄存器内存放的值和当前的PWM周期有关,CCRx存放的值额占空比有关,通过更改CCR0与CCRx的值,便可实现频率和占空比可调节的方波输出。

MOD7 : 复位/置位输出模式,当定时器计数到TACCRx值时,输出复位,当定时器计数到TACCR0值时,输出置位,这个与MOD2的区别更像是STM32里PWM1模式与PWM2模式的区别一样,占空比和频率仍然是通过修改CCR0与CCRx的值来实现的。

  1. /*电机PWM初始化,周期2KHz*/
  2. void MOTOR_PWM_Init(void)
  3. {
  4. P1DIR |= BIT6;
  5. P1SEL |= BIT6;
  6. P2DIR |=BIT0; // 设置 P2.0为输出
  7. P2SEL |=BIT0; // 设置 P2.0为TA1.1输出
  8. TA1CTL= TASSEL_2 +MC_1; // 设置TIMERA的时钟源为SMCLK, 计数模式为up,到CCR0再自动从0开始计数
  9. TA1CCR0 = 500; // 设置PWM 周期 ,由于时钟源选择的SMCLK为1.045MHz,周期 T = 1.045M/20000 = 50 Hz
  10. TA1CCTL1 = OUTMOD_7; // 设置PWM 输出模式为:7 - PWM复位/置位模式
  11. TA1CCR1=100; //CCR1/CCR0即为占空比
  12. }

用示波器可在TA1.1检测到下面的波形

        定时中断

在比较模式下,开启捕获/比较器的中断后,CCRx每计数到设定值后,就会产生一次中断,利用这一性质可实现定时器精准定时中断。下面是一个1s的定时中断

  1. /*定时器中断初始化*/
  2. void SYSTICK_Init(int time)
  3. {
  4. P2DIR|=BIT2;
  5. P2SEL |=BIT2;
  6. TA2CCR0=32768; //置入要比较的数值,实现1s一次中断
  7. TA2CCTL0=CCIE; //捕获比较器1开启 CCIFG 位中断
  8. TA2CTL|=TASSEL_1+MC_1+TACLR;//选择 SCLK32.768KHZ 作为时钟
  9. }
  10. /*定时器中断服务函数,该函数1s执行一次*/
  11. #pragma vector=TIMER2_A0_VECTOR
  12. __interrupt void TIMER2_A0_ISR(void)
  13. {
  14. __enable_interrupt(); //在中断中开启总中断,代表允许中断嵌套
  15. }

三·UART

---------------------------------------------等待后续更新(应该明天会更)---------------------------------------

四·OLED

0.96寸的OLED屏幕相信大家都不陌生,我使用的是I2C通讯协议的OLED屏幕,虽然MSP430是板载了I2C通讯接口的,不过我使用的还是软件I2C,直接从STM32那边移植过来的,通过对GPIO引脚输出特定时序来软件模拟I2C通讯协议的写和读操作,我的屏幕SCL连接在P6.3,SDA连接在P6.4,没啥好说的,直接上源码,大家移植的时候只需要更改oled.h里SCL和SDA的置位和清位就可以了。

关于显示屏幕的显示函数,其中void OLED_ShowString(u8 x,u8 y, u8 *p,u8 Char_Size)是显示ASCII字符串函数,四个形参分别为 x坐标,y坐标,"显示的字符",字体大小有8和16可选,其他大小需要自己去字模软件去取模,显示汉字的函数没有移植过来,大家去野火论坛下载STM32的oled工程,把里面的显示汉字函数拷过来然后将取模软件的汉字取模数据存放在char Hzk[][32]就可以了。

连线和现象如下

  1. #include <oled.h>
  2. void main (void)
  3. {
  4. WDT_A_hold(WDT_A_BASE);
  5. OLED_Init(); //oled初始化
  6. OLED_Clear(); //oled清屏
  7. __enable_interrupt(); //开启全局中断
  8. OLED_ShowString(0,0,"TEST1.0.2:",16); //四个形参分别为 x坐标,y坐标,"显示的字符",字体大小8/16
  9. while(1)
  10. {
  11. }
  12. }
  1. /*oled.h文件*/
  2. #ifndef OLED_H_
  3. #define OLED_H_
  4. #include <sys.h>
  5. #define OLED_MODE 0
  6. #define SIZE 8
  7. #define XLevelL 0x00
  8. #define XLevelH 0x10
  9. #define Max_Column 128
  10. #define Max_Row 64
  11. #define Brightness 0xFF
  12. #define X_WIDTH 128
  13. #define Y_WIDTH 64
  14. #define OLED_SCLK_Clr() P6OUT&=~BIT3 //CLK
  15. #define OLED_SCLK_Set() P6OUT|=BIT3
  16. #define OLED_SDIN_Clr() P6OUT&=~BIT4 //DIN
  17. #define OLED_SDIN_Set() P6OUT|=BIT4
  18. #define OLED_CMD 0
  19. #define OLED_DATA 1
  20. // Functions to control OLED are as follows
  21. void OLED_WR_Byte(unsigned dat,unsigned cmd);
  22. void OLED_Display_On(void);
  23. void OLED_Display_Off(void);
  24. void OLED_Init(void);
  25. void OLED_Clear(void);
  26. void OLED_DrawPoint(u8 x,u8 y,u8 t);
  27. void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);
  28. void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size);
  29. void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
  30. void OLED_ShowVI(u8 x,u8 y,u32 num,u8 size);
  31. void OLED_ShowString(u8 x,u8 y, u8 *p,u8 Char_Size);
  32. void OLED_Set_Pos(unsigned char x, unsigned char y);
  33. void Delay_1ms(unsigned int Del_1ms);
  34. void fill_picture(unsigned char fill_Data);
  35. void Picture();
  36. void IIC_Start();
  37. void IIC_Stop();
  38. void Write_IIC_Command(unsigned char IIC_Command);
  39. void Write_IIC_Data(unsigned char IIC_Data);
  40. void Write_IIC_Byte(unsigned char IIC_Byte);
  41. void IIC_Wait_Ack();
  42. #endif /* OLED_H_ */
  1. /*oled.c文件*/
  2. // the storage format is as follow
  3. //[0]0 1 2 3 ... 127
  4. //[1]0 1 2 3 ... 127
  5. //[2]0 1 2 3 ... 127
  6. //[3]0 1 2 3 ... 127
  7. //[4]0 1 2 3 ... 127
  8. //[5]0 1 2 3 ... 127
  9. //[6]0 1 2 3 ... 127
  10. //[7]0 1 2 3 ... 127
  11. /**********************************************
  12. //IIC Start
  13. **********************************************/
  14. #include<sys.h>
  15. const unsigned char F6x8[][6] =
  16. {
  17. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
  18. 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
  19. 0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
  20. 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
  21. 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
  22. 0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
  23. 0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
  24. 0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
  25. 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
  26. 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
  27. 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
  28. 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
  29. 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
  30. 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
  31. 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
  32. 0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
  33. 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
  34. 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
  35. 0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
  36. 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
  37. 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
  38. 0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
  39. 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
  40. 0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
  41. 0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
  42. 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
  43. 0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
  44. 0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
  45. 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
  46. 0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
  47. 0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
  48. 0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
  49. 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
  50. 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
  51. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
  52. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
  53. 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
  54. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
  55. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
  56. 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
  57. 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
  58. 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
  59. 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
  60. 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
  61. 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
  62. 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
  63. 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
  64. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
  65. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
  66. 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
  67. 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
  68. 0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
  69. 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
  70. 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
  71. 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
  72. 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
  73. 0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
  74. 0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
  75. 0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
  76. 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
  77. 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
  78. 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
  79. 0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
  80. 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
  81. 0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
  82. 0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
  83. 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
  84. 0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
  85. 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
  86. 0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
  87. 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
  88. 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
  89. 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
  90. 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
  91. 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
  92. 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
  93. 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
  94. 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
  95. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
  96. 0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
  97. 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
  98. 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
  99. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
  100. 0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
  101. 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
  102. 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
  103. 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
  104. 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
  105. 0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
  106. 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
  107. 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
  108. 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
  109. };
  110. /****************************************8*16 dot matrix************************************/
  111. const unsigned char F8X16[]=
  112. {
  113. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
  114. 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
  115. 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
  116. 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
  117. 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
  118. 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
  119. 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
  120. 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
  121. 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
  122. 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
  123. 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
  124. 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
  125. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
  126. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
  127. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
  128. 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
  129. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
  130. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
  131. 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
  132. 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
  133. 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
  134. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
  135. 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
  136. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
  137. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
  138. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
  139. 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
  140. 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
  141. 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
  142. 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
  143. 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
  144. 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
  145. 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
  146. 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
  147. 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
  148. 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
  149. 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
  150. 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
  151. 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
  152. 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
  153. 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
  154. 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
  155. 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
  156. 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
  157. 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
  158. 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
  159. 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
  160. 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
  161. 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
  162. 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
  163. 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
  164. 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
  165. 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
  166. 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
  167. 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
  168. 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
  169. 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
  170. 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
  171. 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
  172. 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
  173. 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
  174. 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
  175. 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
  176. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
  177. 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
  178. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
  179. 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
  180. 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
  181. 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
  182. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
  183. 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
  184. 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
  185. 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
  186. 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
  187. 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
  188. 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
  189. 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
  190. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
  191. 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
  192. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
  193. 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
  194. 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
  195. 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
  196. 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
  197. 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
  198. 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
  199. 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
  200. 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
  201. 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
  202. 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
  203. 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
  204. 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
  205. 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
  206. 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
  207. 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
  208. };
  209. char Hzk[][32]={
  210. {0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00},
  211. {0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00},/*"中",0*/
  212. };
  213. void IIC_Start()
  214. {
  215. OLED_SCLK_Set();
  216. OLED_SDIN_Set();
  217. OLED_SDIN_Clr();
  218. OLED_SCLK_Clr();
  219. }
  220. /**********************************************
  221. //IIC Stop
  222. **********************************************/
  223. void IIC_Stop()
  224. {
  225. OLED_SCLK_Set() ;
  226. // OLED_SCLK_Clr();
  227. OLED_SDIN_Clr();
  228. OLED_SDIN_Set();
  229. }
  230. void IIC_Wait_Ack()
  231. {
  232. OLED_SCLK_Set() ;
  233. OLED_SCLK_Clr();
  234. }
  235. /**********************************************
  236. // IIC Write byte
  237. **********************************************/
  238. void Write_IIC_Byte(unsigned char IIC_Byte)
  239. {
  240. unsigned char i;
  241. unsigned char m,da;
  242. da=IIC_Byte;
  243. OLED_SCLK_Clr();
  244. for(i=0;i<8;i++)
  245. {
  246. m=da;
  247. // OLED_SCLK_Clr();
  248. m=m&0x80;
  249. if(m==0x80)
  250. {OLED_SDIN_Set();}
  251. else OLED_SDIN_Clr();
  252. da=da<<1;
  253. OLED_SCLK_Set();
  254. OLED_SCLK_Clr();
  255. }
  256. }
  257. /**********************************************
  258. // IIC Write Command
  259. **********************************************/
  260. void Write_IIC_Command(unsigned char IIC_Command)
  261. {
  262. IIC_Start();
  263. Write_IIC_Byte(0x78); //Slave address,SA0=0
  264. IIC_Wait_Ack();
  265. Write_IIC_Byte(0x00); //write command
  266. IIC_Wait_Ack();
  267. Write_IIC_Byte(IIC_Command);
  268. IIC_Wait_Ack();
  269. IIC_Stop();
  270. }
  271. /**********************************************
  272. // IIC Write Data
  273. **********************************************/
  274. void Write_IIC_Data(unsigned char IIC_Data)
  275. {
  276. IIC_Start();
  277. Write_IIC_Byte(0x78); //D/C#=0; R/W#=0
  278. IIC_Wait_Ack();
  279. Write_IIC_Byte(0x40); //write data
  280. IIC_Wait_Ack();
  281. Write_IIC_Byte(IIC_Data);
  282. IIC_Wait_Ack();
  283. IIC_Stop();
  284. }
  285. void OLED_WR_Byte(unsigned dat,unsigned cmd)
  286. {
  287. if(cmd)
  288. {
  289. Write_IIC_Data(dat);
  290. }
  291. else {
  292. Write_IIC_Command(dat);
  293. }
  294. }
  295. /********************************************
  296. // fill_Picture
  297. ********************************************/
  298. void fill_picture(unsigned char fill_Data)
  299. {
  300. unsigned char m,n;
  301. for(m=0;m<8;m++)
  302. {
  303. OLED_WR_Byte(0xb0+m,0); //page0-page1
  304. OLED_WR_Byte(0x00,0); //low column start address
  305. OLED_WR_Byte(0x10,0); //high column start address
  306. for(n=0;n<128;n++)
  307. {
  308. OLED_WR_Byte(fill_Data,1);
  309. }
  310. }
  311. }
  312. void Delay_1ms(unsigned int Del_1ms)
  313. {
  314. unsigned char j;
  315. while(Del_1ms--)
  316. {
  317. for(j=0;j<123;j++);
  318. }
  319. }
  320. void OLED_Set_Pos(unsigned char x, unsigned char y)
  321. {
  322. OLED_WR_Byte(0xb0+y,OLED_CMD);
  323. OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
  324. OLED_WR_Byte((x&0x0f),OLED_CMD);
  325. }
  326. void OLED_Display_On(void)
  327. {
  328. OLED_WR_Byte(0X8D,OLED_CMD);
  329. OLED_WR_Byte(0X14,OLED_CMD); //DCDC ON
  330. OLED_WR_Byte(0XAF,OLED_CMD); //DISPLAY ON
  331. }
  332. void OLED_Display_Off(void)
  333. {
  334. OLED_WR_Byte(0X8D,OLED_CMD);
  335. OLED_WR_Byte(0X10,OLED_CMD); //DCDC OFF
  336. OLED_WR_Byte(0XAE,OLED_CMD); //DISPLAY OFF
  337. }
  338. void OLED_Clear(void)
  339. {
  340. u8 i,n;
  341. for(i=0;i<8;i++)
  342. {
  343. OLED_WR_Byte (0xb0+i,OLED_CMD);
  344. OLED_WR_Byte (0x00,OLED_CMD);
  345. OLED_WR_Byte (0x10,OLED_CMD);
  346. for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA);
  347. }
  348. }
  349. void OLED_On(void)
  350. {
  351. u8 i,n;
  352. for(i=0;i<8;i++)
  353. {
  354. OLED_WR_Byte (0xb0+i,OLED_CMD);
  355. OLED_WR_Byte (0x00,OLED_CMD);
  356. OLED_WR_Byte (0x10,OLED_CMD);
  357. for(n=0;n<128;n++)OLED_WR_Byte(1,OLED_DATA);
  358. }
  359. }
  360. //x:0~127
  361. //y:0~63
  362. //size:16/12
  363. void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 Char_Size)
  364. {
  365. unsigned char c=0,i=0;
  366. c=chr-' ';
  367. if(x>Max_Column-1){x=0;y=y+2;}
  368. if(Char_Size ==16)
  369. {
  370. OLED_Set_Pos(x,y);
  371. for(i=0;i<8;i++)
  372. OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
  373. OLED_Set_Pos(x,y+1);
  374. for(i=0;i<8;i++)
  375. OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
  376. }
  377. else {
  378. OLED_Set_Pos(x,y);
  379. for(i=0;i<6;i++)
  380. OLED_WR_Byte(F6x8[c][i],OLED_DATA);
  381. }
  382. }
  383. u32 oled_pow(u8 m,u8 n)
  384. {
  385. u32 result=1;
  386. while(n--)result*=m;
  387. return result;
  388. }
  389. void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2)
  390. {
  391. u8 t,temp;
  392. u8 enshow=0;
  393. for(t=0;t<len;t++)
  394. {
  395. temp=(num/oled_pow(10,len-t-1))%10;
  396. if(enshow==0&&t<(len-1))
  397. {
  398. if(temp==0)
  399. {
  400. OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
  401. continue;
  402. }else enshow=1;
  403. }
  404. OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2);
  405. }
  406. }
  407. void OLED_ShowVI(u8 x,u8 y,u32 num,u8 size2)
  408. {
  409. OLED_ShowNum(x+size2*4-1,y,num%10,1,size2);
  410. OLED_ShowNum(x+size2*3-1,y,num/10%10,1,size2);
  411. OLED_ShowNum(x+size2*2-1,y,num/100%10,1,size2);
  412. OLED_ShowString(x+size2*1-1,y,".",size2);
  413. OLED_ShowNum(x-1,y,num/1000,1,size2);
  414. }
  415. void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)
  416. {
  417. unsigned char j=0;
  418. while (chr[j]!='\0')
  419. { OLED_ShowChar(x,y,chr[j],Char_Size);
  420. x+=8;
  421. if(x>120){x=0;y+=2;}
  422. j++;
  423. }
  424. }
  425. void OLED_Init(void)
  426. {
  427. P6DIR |= BIT3+BIT4;
  428. Delay_1ms(200);
  429. OLED_WR_Byte(0xAE,OLED_CMD);
  430. OLED_WR_Byte(0x00,OLED_CMD);
  431. OLED_WR_Byte(0x10,OLED_CMD);
  432. OLED_WR_Byte(0x40,OLED_CMD);
  433. OLED_WR_Byte(0xB0,OLED_CMD);
  434. OLED_WR_Byte(0x81,OLED_CMD); // contract control
  435. OLED_WR_Byte(0xFF,OLED_CMD);//--128
  436. OLED_WR_Byte(0xA1,OLED_CMD);
  437. OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
  438. OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  439. OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 duty
  440. OLED_WR_Byte(0xC8,OLED_CMD);
  441. OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
  442. OLED_WR_Byte(0x00,OLED_CMD);//
  443. OLED_WR_Byte(0xD5,OLED_CMD);
  444. OLED_WR_Byte(0x80,OLED_CMD);//
  445. OLED_WR_Byte(0xD8,OLED_CMD);
  446. OLED_WR_Byte(0x05,OLED_CMD);//
  447. OLED_WR_Byte(0xD9,OLED_CMD);
  448. OLED_WR_Byte(0xF1,OLED_CMD);//
  449. OLED_WR_Byte(0xDA,OLED_CMD);
  450. OLED_WR_Byte(0x12,OLED_CMD);//
  451. OLED_WR_Byte(0xDB,OLED_CMD);
  452. OLED_WR_Byte(0x30,OLED_CMD);//
  453. OLED_WR_Byte(0x8D,OLED_CMD);
  454. OLED_WR_Byte(0x14,OLED_CMD);//
  455. OLED_WR_Byte(0xAF,OLED_CMD);
  456. }

五·MPU6050

---------------------------------------------等待后续更新(应该明天会更)---------------------------------------

最后编辑于21:03:58-2021-08-04

学习笔记-CCS-MSP430F5529[快速入门篇二]的更多相关文章

  1. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  2. MyBatis学习笔记(一)——MyBatis快速入门

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...

  3. 【Python】【学习笔记】1.快速入门

    1.软件安装 从官网下载相应版本的安装包,一般不大. https://www.python.org/ 安装一路默认即可 2. 参考教程:快速入门:十分钟学会Python 本文的内容介于教程(Totur ...

  4. 前端学习笔记之ES6快速入门

    0x1 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 20; } x ...

  5. 笔记45 Hibernate快速入门(二)

    Hibernate O/R 映射 一.多对一 一个Product对应一个Category,一个Category对应多个Product,所以Product和Category是多对一的关系.使用hiber ...

  6. 《C++ 101条建议》学习笔记——第一章快速入门

    1.C++程序组成:a.编译指示,由#开始,不由分号结束.只是影响编译过程.b.声明语句,影响编译过程,编译结果中并不会生成对应的指令.只是告诉编译器一些信息.c.可执行过程语句,生成对应的指令.包括 ...

  7. Node.js学习笔记3(快速入门)

           一.开始使用Node.js编程           1.hello world           好了,让我们开始实现第一个 Node.js 程序吧.打开你常用的文本编辑器,在其中输入 ...

  8. 笔记51 Mybatis快速入门(二)

    Mybatis的CRUD 1.修改配置文件Category.xml,提供CRUD对应的sql语句. <?xml version="1.0" encoding="UT ...

  9. 私有仓库GitLab快速入门篇

    私有仓库GitLab快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 安装文档请参考官网:https://about.gitlab.com/installation/#ce ...

随机推荐

  1. 深入理解 sync.Once 与 sync.Pool

    深入理解 sync.Once 与 sync.Pool sync.Once 代表在这个对象下在这个示例下多次执行能保证只会执行一次操作. var once sync.Once for i:=0; i & ...

  2. 什么是DDoS黑洞路由?

    1. 什么是DDoS黑洞路由? DDoS黑洞路由/过滤(有时称为黑孔)是缓解DDoS攻击的一种对策,网络流量将被路由到"黑洞"中并且丢失.如果在没有特定限制条件下实施黑洞过滤,合法 ...

  3. LVS-NAT模式的实现

    一.架构如下: 二.安装过程 1.配置"互联网"服务器 1.1.修改服务器ip为192.168.10.101/24 [root@internet ~]# ip a 1: lo: & ...

  4. 『学了就忘』Linux基础 — 1、UNIX系统介绍

    目录 (一)UNIX系统介绍 1.UNIX系统发展历史 2.UNIX 主要发行版本 (二)GNU计划 1.GNU计划介绍 2.为何Stallman会发起这个GNU计划呢? 3.GNU的通用公共许可证: ...

  5. Hystrix 使用说明

    1.什么情况下会触发 fallback 方法 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT ...

  6. 解决mount.nfs: access denied by server while mounting

    在linux下进行挂载时突然出现: mount.nfs: access denied by server while mounting  第一感觉是读取文件权限不够,准备去更改一下挂载点的权限,但又考 ...

  7. Linux环境Nginx安装、调试以及PHP安装(转)

      linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5 1.编译安装Nginx 官网:http://wiki.nginx.org/Install ...

  8. redis学习笔记(三)——redis的命令大全总结

    总结了一些redis五种存储类型的常用命令以及一些通用操作命令,不是很全,是在学习的时候将学到的做了个汇总,使用的时候可以查一下. 笔记写在表格里面了,不好粘贴.......后面的直接截图了..... ...

  9. centos安装报错:license information (license not accepted)

    前言:在最近部署的centos系统发现个问题 出现报错:安装配置完成后,重启虚拟机出现license  information  (license not accepted) 截图: 解决方案: 在界 ...

  10. 『心善渊』Selenium3.0基础 — 30、UI自动化测试之POM设计模式

    目录 (一)POM模式介绍 1.什么是POM介绍 2.为什么要使用POM模式 3.POM的优势 4.POM模式封装思路 (1)POM模式将页面分成三层 (2)POM模式的核心要素(重点) (3)总结 ...