0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【南京中科微CSM32RV20開發(fā)板試用體驗】+2-oled rtc的使用

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-30 10:47 ? 次閱讀
本文來源電子發(fā)燒友社區(qū),作者:盧松濤, 帖子地址:https://bbs.elecfans.com/jishu_2249213_1_1.html

在"【南京中科微CSM32RV20開發(fā)板試用體驗】+1-GPIO口串口的使用"基礎(chǔ)上增加
oled rtc

硬件IIC非中斷的使用:
///---- Chapter 12 I2C Test Init -------------------------------------------------------------------------------------
uint8_t i2c_data;
I2C_Init_case1();//非中斷模式
rtc的使用:
///---- Chapter 7 RTC Test Init --------------------------------------------------------------------------------------
//RTC_Init_case1();
RTC_Init_case2();

Interrupt_Level(MtiMER_int_ID, INT_LEVEL2 );//CLIC設(shè)置中斷搶占級別
Interrupt_Enable(MTIMER_int_ID);//CLIC使能中斷
SYS_Interrupt_Enable();//CLIC開總中斷


  1. #include "headfile.h"
  2. #ifndef __OLEDFONT_H
  3. #define __OLEDFONT_H
  4. //常用ASCII表
  5. //偏移量32
  6. //ASCII字符集
  7. //偏移量32
  8. //大小:12*6
  9. /************************************6*8的點陣************************************/
  10. const unsigned char F6x8[][6] =
  11. {
  12. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
  13. 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
  14. 0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
  15. 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
  16. 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
  17. 0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
  18. 0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
  19. 0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
  20. 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
  21. 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
  22. 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
  23. 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
  24. 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
  25. 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
  26. 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
  27. 0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
  28. 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
  29. 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
  30. 0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
  31. 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
  32. 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
  33. 0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
  34. 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
  35. 0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
  36. 0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
  37. 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
  38. 0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
  39. 0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
  40. 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
  41. 0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
  42. 0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
  43. 0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
  44. 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
  45. 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
  46. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
  47. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
  48. 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
  49. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
  50. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
  51. 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
  52. 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
  53. 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
  54. 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
  55. 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
  56. 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
  57. 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
  58. 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
  59. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
  60. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
  61. 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
  62. 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
  63. 0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
  64. 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
  65. 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
  66. 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
  67. 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
  68. 0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
  69. 0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
  70. 0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
  71. 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
  72. 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
  73. 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
  74. 0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
  75. 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
  76. 0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
  77. 0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
  78. 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
  79. 0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
  80. 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
  81. 0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
  82. 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
  83. 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
  84. 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
  85. 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
  86. 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
  87. 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
  88. 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
  89. 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
  90. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
  91. 0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
  92. 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
  93. 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
  94. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
  95. 0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
  96. 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
  97. 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
  98. 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
  99. 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
  100. 0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
  101. 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
  102. 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
  103. 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
  104. };
  105. /****************************************8*16的點陣************************************/
  106. const unsigned char F8X16[]=
  107. {
  108. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0
  109. 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
  110. 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
  111. 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
  112. 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
  113. 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
  114. 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
  115. 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
  116. 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
  117. 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
  118. 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
  119. 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
  120. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
  121. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
  122. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
  123. 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
  124. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
  125. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
  126. 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
  127. 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
  128. 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
  129. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
  130. 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
  131. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
  132. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
  133. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
  134. 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
  135. 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
  136. 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
  137. 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
  138. 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
  139. 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
  140. 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
  141. 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
  142. 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
  143. 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
  144. 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
  145. 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
  146. 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
  147. 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
  148. 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
  149. 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
  150. 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
  151. 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
  152. 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
  153. 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
  154. 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
  155. 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
  156. 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
  157. 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
  158. 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
  159. 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
  160. 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
  161. 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
  162. 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
  163. 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
  164. 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
  165. 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
  166. 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
  167. 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
  168. 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,// 60
  169. 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
  170. 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
  171. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
  172. 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
  173. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
  174. 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
  175. 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
  176. 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
  177. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
  178. 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
  179. 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
  180. 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
  181. 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
  182. 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
  183. 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
  184. 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
  185. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
  186. 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
  187. 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
  188. 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
  189. 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
  190. 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
  191. 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
  192. 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
  193. 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
  194. 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
  195. 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
  196. 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
  197. 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
  198. 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
  199. 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
  200. 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
  201. 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
  202. 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
  203. };
  204. /***********************************************
  205. PCtoLCD2002設(shè)置
  206. 陰碼,逆向,C51格式,十六進(jìn)制數(shù)據(jù),列行式,輸出三個全選中
  207. 每行顯示點陣9999,索引9999
  208. 格式: 段前綴 【無】;
  209. 段后綴 【無】;
  210. 注釋前綴(右邊空格去掉) 【/ *"】;
  211. 注釋后綴 【",】;
  212. 數(shù)據(jù)后綴 【,】;
  213. 行前綴 【{】;
  214. 行后綴 【},】
  215. **********************************************/
  216. /***********************************
  217. 16x16漢字
  218. 取字軟件:PCtoLCD2002
  219. 使用方法見文檔
  220. ***********************************/
  221. const unsigned char Chinese_Word_16[][32]= {
  222. {0x84,0x84,0xFC,0x84,0x84,0x40,0x64,0x54,0x4C,0x47,0x4C,0x54,0xE4,0x44,0x40,0x00,0x10,0x30,0x1F,0x08,0x08,0x00,0x1F,0x11,0x11,0x1F,0x40,0x80,0x7F,0x00,0x00,0x00},/*"琦",0*/
  223. {0x00,0x02,0x02,0x7A,0x4A,0x4A,0x4A,0x4A,0x7A,0x02,0x02,0x7E,0x02,0x02,0x00,0x00,0x01,0x01,0x01,0x3D,0x25,0x25,0x25,0x25,0x3D,0x41,0x81,0x7F,0x01,0x01,0x01,0x00},/*"哥",1*/
  224. {0x00,0x40,0x20,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00},/*"牛",2*/
  225. {0x40,0x40,0x42,0xCC,0x00,0x82,0xBA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBA,0x82,0x00,0x00,0x00,0x40,0x20,0x1F,0x20,0x5F,0x4A,0x4A,0x4A,0x4F,0x4A,0x4A,0x4A,0x5F,0x40,0x00},/*"逼",3*/
  226. };
  227. #endif
  228. void mp_receive_data(uint8_t *buf, uint16_t *len)
  229. {
  230. uint8_t rxlen = UART1_RX_CNT;
  231. uint16_t i = 0;
  232. *len = 0; //默認(rèn)為0
  233. Delay32M_ms(10); //等待40ms,連續(xù)超過10ms沒有接收到一個數(shù)據(jù),則認(rèn)為接收結(jié)束
  234. if (rxlen == UART1_RX_CNT && rxlen) //接收到了數(shù)據(jù),且接收完成了
  235. {
  236. for (i = 0; i < rxlen; i++)
  237. {
  238. buf[i] = uart_dev.rxbuf[i];
  239. }
  240. *len = UART1_RX_CNT; //記錄本次數(shù)據(jù)長度
  241. UART1_RX_CNT = 0; //清零
  242. uart_dev.frameok=1; //標(biāo)記完成一幀數(shù)據(jù)接收
  243. // getData=0;//數(shù)據(jù)接收完成,標(biāo)志位清零
  244. }
  245. }
  246. #define Max_Column 128
  247. void OLED_Write_IIC_Command(uint8_t IIC_Command)
  248. {
  249. I2C_Write(0x00,IIC_Command);
  250. }
  251. void OLED_Write_IIC_Data(uint8_t IIC_Data)
  252. {
  253. I2C_Write(0x40,IIC_Data);
  254. }
  255. /**
  256. * @brief :OLED_Clear
  257. * [url=home.php?mod=space&uid=1902110]@NOTE[/url] : --清屏函數(shù)
  258. --清完屏,整個屏幕是黑色的!和沒點亮一樣
  259. * @param : >>
  260. >>
  261. * @return :void
  262. *
  263. * @date :2021/01/29
  264. * [url=home.php?mod=space&uid=44345]@design[/url] :
  265. **/
  266. void OLED_Clear(void)
  267. {
  268. uint8_t i,n;
  269. for(i=0; i<8; i++)
  270. {
  271. OLED_Write_IIC_Command (0xb0+i); //設(shè)置頁地址(0~7)
  272. OLED_Write_IIC_Command (0x00); //設(shè)置顯示位置—列低地址
  273. OLED_Write_IIC_Command (0x10); //設(shè)置顯示位置—列高地址
  274. for(n=0; n<128; n++)
  275. {
  276. OLED_Write_IIC_Data(0x00);
  277. }
  278. }
  279. //更新顯示
  280. }
  281. /**
  282. * @brief :OLED_Set_Pos
  283. * @note : --坐標(biāo)設(shè)置
  284. * @param : >>
  285. >>
  286. * @return :void
  287. *
  288. * @date :2021/01/29
  289. * @design :
  290. **/
  291. void OLED_Set_Pos(uint8_t x, uint8_t y)
  292. { OLED_Write_IIC_Command(0xb0+y);
  293. OLED_Write_IIC_Command(((x&0xf0)>>4)|0x10);
  294. OLED_Write_IIC_Command((x&0x0f));
  295. }
  296. /**
  297. * @brief :OLED_ShowChar
  298. * @note : --在指定位置顯示一個字符,包括部分字符
  299. --例如:OLED_ShowChar(20,6,'A',16);
  300. * @param : >>
  301. >>x:0~127
  302. >>y:0~6
  303. >>mode:0,反白顯示;1,正常顯示
  304. >>size:選擇字體 8/16
  305. * @return :void
  306. *
  307. * @date :2021/01/29
  308. * @design :
  309. **/
  310. void OLED_ShowChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t Char_Size)
  311. {
  312. uint8_t c=0,i=0;
  313. c=chr-' ';//得到偏移后的值
  314. if(x>Max_Column-1) {
  315. x=0;
  316. y=y+2;
  317. }
  318. if(Char_Size ==16)
  319. {
  320. OLED_Set_Pos(x,y);
  321. for(i=0; i<8; i++)
  322. OLED_Write_IIC_Data(F8X16[c*16+i]);
  323. OLED_Set_Pos(x,y+1);
  324. for(i=0; i<8; i++)
  325. OLED_Write_IIC_Data(F8X16[c*16+i+8]);
  326. }
  327. else
  328. {
  329. OLED_Set_Pos(x,y);
  330. for(i=0; i<6; i++)
  331. OLED_Write_IIC_Data(F6x8[c][i]);
  332. }
  333. }
  334. /**
  335. * @brief :OLED_ShowString
  336. * @note : --顯示一個字符號串
  337. --例如:
  338. u8 SET[2][3] = {{"ON "},{"OFF"}};
  339. OLED_ShowString(0,0,SET[0],8);
  340. * @param : >>
  341. >>size:選擇字體 8/16
  342. * @return :void
  343. *
  344. * @date :2021/01/29
  345. * @design :
  346. **/
  347. void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size)
  348. {
  349. while (*chr!='')
  350. { OLED_ShowChar(x,y,*chr,Char_Size);
  351. x+=8;
  352. if(x>120) {
  353. x=0;
  354. y+=2;
  355. }
  356. chr++;
  357. }
  358. }
  359. /**********************************************
  360. //m^n函數(shù)
  361. **********************************************/
  362. uint32_t oled_pow(uint8_t m,uint8_t n)
  363. {
  364. uint32_t result=1;
  365. while(n--)result*=m;
  366. return result;
  367. }
  368. /**
  369. * @brief :OLED_ShowNumber
  370. * @note : --顯示數(shù)字
  371. --例如:OLED_ShowNumber(0,0,45125215,10);
  372. * @param : >>x,y :起點坐標(biāo)
  373. >>len :數(shù)字的位數(shù)
  374. >>size:字體大小默認(rèn)16
  375. >>num:數(shù)值(0~4294967295);
  376. * @return :void
  377. *
  378. * @date :2021/01/29
  379. * @design :
  380. **/
  381. void OLED_ShowNumber(uint8_t x,uint8_t y,uint32_t num,uint8_t len)
  382. {
  383. uint8_t size2 = 16;
  384. uint8_t t,temp;
  385. uint8_t enshow=0;
  386. for(t=0; t;>
  387. {
  388. temp=(num/oled_pow(10,len-t-1))%10;
  389. if(enshow==0&&t<(len-1))
  390. {
  391. if(temp==0)
  392. {
  393. OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
  394. continue;
  395. } else enshow=1;
  396. }
  397. OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2);
  398. }
  399. }
  400. //初始化SSD1306
  401. void OLED_Init(void)
  402. {
  403. // OLED_GPIO_Init();
  404. Delay32M_ms(1500);
  405. // OLED_WR_Byte(0xAE,OLED_CMD);//--display off
  406. // OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
  407. // OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
  408. // OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
  409. // OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
  410. // OLED_WR_Byte(0x81,OLED_CMD); // contract control
  411. // OLED_WR_Byte(0xFF,OLED_CMD);//--128
  412. // OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
  413. // OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
  414. // OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  415. // OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 duty
  416. // OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
  417. // OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
  418. // OLED_WR_Byte(0x00,OLED_CMD);//
  419. // OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
  420. // OLED_WR_Byte(0x80,OLED_CMD);//
  421. // OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode off
  422. // OLED_WR_Byte(0x05,OLED_CMD);//
  423. // OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
  424. // OLED_WR_Byte(0xF1,OLED_CMD);//
  425. // OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
  426. // OLED_WR_Byte(0x12,OLED_CMD);//
  427. // OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
  428. // OLED_WR_Byte(0x30,OLED_CMD);//
  429. // OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
  430. // OLED_WR_Byte(0x14,OLED_CMD);//
  431. // OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
  432. OLED_Write_IIC_Command(0xAE); //display off
  433. OLED_Write_IIC_Command(0x20); //Set Memory Addressing Mode
  434. OLED_Write_IIC_Command(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
  435. OLED_Write_IIC_Command(0xb0); //Set Page Start Address for Page Addressing Mode,0-7
  436. OLED_Write_IIC_Command(0xc8); //Set COM Output Scan Direction
  437. OLED_Write_IIC_Command(0x00); //---set low column address
  438. OLED_Write_IIC_Command(0x10); //---set high column address
  439. OLED_Write_IIC_Command(0x40); //--set start line address
  440. OLED_Write_IIC_Command(0x81); //--set contrast control register
  441. OLED_Write_IIC_Command(0xff); //亮度調(diào)節(jié) 0x00~0xff
  442. OLED_Write_IIC_Command(0xa1); //--set segment re-map 0 to 127
  443. OLED_Write_IIC_Command(0xa6); //--set normal display
  444. OLED_Write_IIC_Command(0xa8); //--set multiplex ratio(1 to 64)
  445. OLED_Write_IIC_Command(0x3F); //
  446. OLED_Write_IIC_Command(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
  447. OLED_Write_IIC_Command(0xd3); //-set display offset
  448. OLED_Write_IIC_Command(0x00); //-not offset
  449. OLED_Write_IIC_Command(0xd5); //--set display clock divide ratio/oscillator frequency
  450. OLED_Write_IIC_Command(0xf0); //--set divide ratio
  451. OLED_Write_IIC_Command(0xd9); //--set pre-charge period
  452. OLED_Write_IIC_Command(0x22); //
  453. OLED_Write_IIC_Command(0xda); //--set com pins hardware configuration
  454. OLED_Write_IIC_Command(0x12);
  455. OLED_Write_IIC_Command(0xdb); //--set vcomh
  456. OLED_Write_IIC_Command(0x20); //0x20,0.77xVcc
  457. OLED_Write_IIC_Command(0x8d); //--set DC-DC enable
  458. OLED_Write_IIC_Command(0x14); //
  459. OLED_Write_IIC_Command(0xaf); //--turn on oled panel
  460. }
  461. uint8_t ReceiveBuff[RECV_LEN];
  462. int main(void)
  463. {
  464. uint16_t rlen=0;
  465. uart_dev.rxlen=0;
  466. ///----System Init ---------------------------------------------------------------------------------------------
  467. CLIC_Init();//系統(tǒng)中斷配置
  468. System_Clock_Init();//系統(tǒng)時鐘初始化
  469. ///----Chapter 3 LowPower Test Init ---------------------------------------------------------------------------------
  470. //低功耗測功耗需要IO不能懸空
  471. //Delay32M_ms(5000);
  472. //LowPower_Config_case1();//所有IO設(shè)置為輸入,下拉
  473. //LowPower_Config_case2();//所有IO設(shè)置為輸入,上拉
  474. //使用外部中斷喚醒
  475. //GPIO_EXIT_Init_case1(GPIOA, PIN2);//檢測高電平
  476. //Interrupt_Level(EXIT2_int_ID, INT_LEVEL0);//CLIC設(shè)置中斷搶占級別
  477. //Interrupt_Enable(EXIT2_int_ID);//CLIC使能EXIT中斷
  478. //SYS_Interrupt_Enable();//CLIC開總中斷
  479. //配置不同低功耗模式
  480. //System_Halt();//待機(jī)模式 halt1
  481. //System_Sleep();//睡眠模式 halt2
  482. //System_Powerdown();//掉電模式 powerdown1
  483. //System_DeepPwd();//掉電模式 powerdown2
  484. ///----Chapter 5 GPIO Test Init ---------------------------------------------------------------------------------
  485. GPIO_MODE_Init(GPIOA,PIN8,GPIO_MODE_OUTPUT); //GPIO 模式
  486. GPIO_MODE_Init(GPIOA,PIN10,GPIO_MODE_OUTPUT); //GPIO 模式
  487. GPIO_MODE_Init(GPIOA,PIN12,GPIO_MODE_OUTPUT); //GPIO 模式
  488. //GPIO_MODE_Init(GPIOA,PIN14,GPIO_MODE_OUTPUT); //GPIO 模式
  489. //GPIO_MODE_Init(GPIOA,PIN15,GPIO_MODE_OUTPUT); //GPIO 模式
  490. //GPIO_Write(GPIOA,PIN8,GPIO_SET); //GPIO 輸出
  491. //GPIO_Write(GPIOA,PIN10,GPIO_SET); //GPIO 輸出
  492. //GPIO_Write(GPIOA,PIN12,GPIO_SET); //GPIO 輸出
  493. //GPIO_Write(GPIOA,PIN14,GPIO_RESET); //GPIO 輸出
  494. //GPIO_Write(GPIOA,PIN15,GPIO_RESET); //GPIO 輸出
  495. //GPIO_Toggle(GPIOA,PIN15); //GPIO 翻轉(zhuǎn)
  496. //GPIO_MODE_Init(GPIOA,PIN15,GPIO_MODE_INTPUT); //GPIO 模式
  497. for(uint8_t i=0;i<10;i++)
  498. {
  499. GPIO_Toggle(GPIOA,PIN8); //GPIO 翻轉(zhuǎn)
  500. Delay32M_ms(100);
  501. }
  502. ///---- Chapter 6 EXIT Test Init -------------------------------------------------------------------------------------
  503. //GPIO_EXIT_Init_case1(GPIOA, PIN2);//檢測高電平
  504. //GPIO_EXIT_Init_case2(GPIOA, PIN2);//檢測低電平
  505. //GPIO_EXIT_Init_case3(GPIOA, PIN2);//檢測上升沿
  506. //GPIO_EXIT_Init_case4(GPIOA, PIN2);//檢測下降沿
  507. //Interrupt_Level(EXIT2_int_ID, INT_LEVEL0);//CLIC設(shè)置中斷搶占級別
  508. //Interrupt_Enable(EXIT2_int_ID);//CLIC使能EXIT中斷
  509. //載波檢測中斷
  510. //CAW_Init();//載波檢測
  511. //Interrupt_Enable(CAW_int_ID);//CLIC使能中斷
  512. //SYS_Interrupt_Enable();//CLIC開總中斷
  513. ///---- Chapter 7 RTC Test Init --------------------------------------------------------------------------------------
  514. //RTC_Init_case1();
  515. RTC_Init_case2();
  516. Interrupt_Level(MTIMER_int_ID, INT_LEVEL2 );//CLIC設(shè)置中斷搶占級別
  517. Interrupt_Enable(MTIMER_int_ID);//CLIC使能中斷
  518. SYS_Interrupt_Enable();//CLIC開總中斷
  519. ///---- Chapter 8 IWDG Test Init -------------------------------------------------------------------------------------
  520. //IWDG_Init(9000); //配置看門狗計數(shù)值(時鐘頻率3K)
  521. //Delay32M_ms(1000);
  522. //IWDG_Start(); //啟動看門狗
  523. //IWDG_Refresh(); //喂狗
  524. ///---- Chapter 9 Timer Test Init ------------------------------------------------------------------------------------
  525. //GPIO_MODE_Init(GPIOB,PIN11,GPIO_MODE_OUTPUT); //GPIO 模式
  526. //GPIO_MODE_Init(GPIOA,PIN9,GPIO_MODE_OUTPUT);
  527. //GPIO_MODE_Init(GPIOA,PIN11,GPIO_MODE_OUTPUT);
  528. //GPIO_MODE_Init(GPIOA,PIN13,GPIO_MODE_OUTPUT);
  529. //外設(shè)配置
  530. //Timer1_UpCounting_Mode_Init();//向上計數(shù)
  531. //Timer1_6StepPWM_Mode_Init();//6stepPWM輸出
  532. //Timer2_UpCounting_Mode_Init();//向上計數(shù)
  533. //Timer2_DownCounting_Mode_Init();//向下計數(shù)
  534. //Timer2_ExternalClock_Mode_Init();//外部時鐘
  535. //Timer2_InputCapture_Mode_Init();//輸入捕獲
  536. //Timer2_PWM_InputCapture_Mode_Init();//PWM輸入捕獲
  537. //Timer2_Input_XOR_Mode_Init();//輸入異或
  538. //Timer2_PWM_Mode_Init();//PWM輸出
  539. //Timer2_6StepPWM_Mode_Init();//6stepPWM輸出
  540. //設(shè)置中斷優(yōu)先級
  541. //Interrupt_Level(TIMER1_updata_int_ID, INT_LEVEL1);//CLIC設(shè)置中斷搶占級別
  542. //使能外設(shè)中斷
  543. //Interrupt_Enable(TIMER1_break_int_ID);//CLIC使能中斷
  544. //Interrupt_Enable(TIMER1_updata_int_ID);//CLIC使能中斷
  545. //Interrupt_Enable(TIMER1_capture_compare_int_ID);//CLIC使能中斷
  546. //Interrupt_Enable(TIMER1_trigger_comm_int_ID);//CLIC使能中斷
  547. //Interrupt_Enable(TIMER2_break_int_ID);//CLIC使能中斷
  548. //Interrupt_Enable(TIMER2_updata_int_ID);//CLIC使能中斷
  549. //Interrupt_Enable(TIMER2_capture_compare_int_ID);//CLIC使能中斷
  550. //Interrupt_Enable(TIMER2_trigger_comm_int_ID);//CLIC使能中斷
  551. //使能系統(tǒng)總中斷
  552. //SYS_Interrupt_Enable();//CLIC開總中斷
  553. ///---- Chapter 10 WUP Test Init -------------------------------------------------------------------------------------
  554. //GPIO_MODE_Init(GPIOA,PIN2,GPIO_MODE_OUTPUT);
  555. //GPIO_MODE_Init(GPIOA,PIN3,GPIO_MODE_OUTPUT);
  556. //WUP_Init_case1(9000);//設(shè)置中斷周期,使能WUP中斷
  557. //Interrupt_Enable(WUP_int_ID);//CLIC使能中斷
  558. //SYS_Interrupt_Enable();//CLIC開總中斷
  559. //配置不同低功耗模式
  560. //System_Halt();//待機(jī)模式 halt1
  561. //System_Sleep();//睡眠模式 halt2
  562. //System_Powerdown();//掉電模式 powerdown1
  563. //System_DeepPwd();//掉電模式 powerdown2
  564. ///---- Chapter 11 ADC Test Init -------------------------------------------------------------------------------------
  565. uint32_t adc_result;
  566. uint32_t adc_pack[16];
  567. uint32_t adc_sum;
  568. uint32_t adc_count;
  569. uint32_t adc_avr;
  570. uint32_t voltage_avr;
  571. ADC_Init_case1();//內(nèi)部基準(zhǔn),測PA4
  572. //ADC_Init_case2();//外部基準(zhǔn),測PA4
  573. ///---- Chapter 12 I2C Test Init -------------------------------------------------------------------------------------
  574. uint8_t i2c_data;
  575. I2C_Init_case1();//非中斷模式
  576. //I2C_Init_case2();//ready中斷模式
  577. //I2C_Init_case3();//error中斷模式
  578. //I2C_Init_case4();//ready & error中斷模式
  579. //Interrupt_Enable(I2C_ready_int_ID);//CLIC使能i2c_ready中斷
  580. //Interrupt_Enable(I2C_error_int_ID);//CLIC使能i2c_error中斷
  581. //SYS_Interrupt_Enable();//CLIC開總中斷
  582. OLED_Init();
  583. ///---- Chapter 13 SPI1 Test Init ------------------------------------------------------------------------------------
  584. //uint8_t sTxpack[10] = {0,1,2,3,4,5,6,7,8,9};
  585. //uint8_t sRxpack[10] = {0,1,2,3,4,5,6,7,8,9};
  586. //uint8_t REG_Data;
  587. //SPI1 Init Test
  588. //SPI_Init_case1(SPI1);//非中斷模式
  589. //SPI1_CSN_Init_case1();//CFG: CE-GPIO7,CSN-GPIO8
  590. //SPI_Init_case2(SPI1);//中斷模式
  591. //Interrupt_Enable(SPI1_int_ID);//CLIC使能單個中斷
  592. //SPI2 Init Test
  593. //SPI_Init_case1(SPI2);//非中斷模式
  594. //SPI2_CSN_Init_case1();//CFG: CE-GPIO7,CSN-GPIO8
  595. //SPI_Init_case2(SPI2);//中斷模式
  596. //Interrupt_Enable(SPI2_int_ID);//CLIC使能單個中斷
  597. ///---- Chapter 15 UART Test Init -------------------------------------------------------------------------------
  598. //uint8_t upack1[20] = {0,1,2,3,4,5,6,7,8,9};
  599. //uint8_t upack2[20] = {0,1,2,3,4,5,6,7,8,9};
  600. //uint8_t upack3[20] = {0,1,2,3,4,5,6,7,8,9};
  601. //uint8_t upack4[20] = {10,1,2,3,4,5,6,7,8,9};
  602. //UART_Init_case1(UART2);//非中斷模式
  603. //UART_Init_case1(UART3);//非中斷模式
  604. //UART_Init_case1(UART4);//非中斷模式
  605. UART_Init_IT_case1(UART1);//中斷模式
  606. //UART_Init_IT_case1(UART4);//中斷模式
  607. Interrupt_Enable(UART1_int_ID);//CLIC使能單個中斷
  608. UART1->CTRL |= 0x00000001U;//清除中斷標(biāo)志位,防止開機(jī)先進(jìn)一次中斷
  609. //Interrupt_Enable(UART4_int_ID);//CLIC使能單個中斷
  610. SYS_Interrupt_Enable();//CLIC開總中斷
  611. //printf("uart init:rn");
  612. ///---- Chapter 16 LV Test Init --------------------------------------------------------------------------------------
  613. //LV_Init_case1(12);//設(shè)置低壓報警閾值
  614. //LV_Interrupt_Enable();//使能低壓報警中斷
  615. //Interrupt_Enable(LV_int_ID);//CLIC使能單個中斷
  616. //SYS_Interrupt_Enable();//CLIC開總中斷
  617. ///---- Chapter 17 RANDGEN Test Init ---------------------------------------------------------------------------------
  618. //uint32_t rand_data;
  619. ///---- Chapter 18 compare Test Init ---------------------------------------------------------------------------------
  620. //COPM1_Init();//COPM1
  621. //Interrupt_Enable(COMP1_int_ID);//CLIC使能單個中斷
  622. //COPM2_Init();//COPM2
  623. //Interrupt_Enable(COMP2_int_ID);//CLIC使能單個中斷
  624. //COPM3_Init();//COPM3
  625. //Interrupt_Enable(COMP3_int_ID);//CLIC使能單個中斷
  626. //SYS_Interrupt_Enable();//CLIC開總中斷
  627. ///---- Chapter 22 flash Test Init ----------------------------------------------------------------------------------
  628. //NVR_RW_Test();//NVR read and write test
  629. //Flash_RW_Test();
  630. ///---- 系統(tǒng)總中斷控制 -------------------------------------------------------------------------------------------------
  631. //SYS_Interrupt_Enable();//CLIC開總中斷
  632. //SYS_Interrupt_Disable();//CLIC關(guān)總中斷
  633. adc_pack[0]=read_csr(mcycle);
  634. adc_pack[1]=read_csr(mcycle);
  635. ee_printf("nHello CSM32RV20:n");
  636. ee_printf("mcycle:%d n",read_csr(mcycle));//比如mcycle這一CSR用于處理器運行的時鐘周期計數(shù)
  637. ee_printf("read_csr(mcycle):%d n",adc_pack[1]-adc_pack[0]);//比如mcycle這一CSR用于處理器運行的時鐘周期計數(shù)
  638. ee_printf("CMU->OSC_SR:%x n",CMU->OSC_SR );
  639. if(CMU->OSC_SR==210 ) ee_printf("CMU->OSC_SR:210,OSC 時鐘已穩(wěn)定,RCOSC 時鐘已穩(wěn)定,:OSC 在為 MCU 提供時鐘;OSC 在為外設(shè)提供時鐘; n" );
  640. //printf("Hello CSM32RV20:rn");
  641. ee_printf("請輸入:on 或者off (開燈/關(guān)燈)rn");
  642. uint32_t rt_tick1 = rt_tick_get();
  643. uint32_t rt_tick2 = rt_tick_get();
  644. OLED_Clear();
  645. Delay32M_ms(1000);
  646. // OLED_Light();
  647. // OLED_DrawBMP(0,0,128,8,BAD_APPLE);
  648. OLED_ShowString(0,0,"CSM32 TEST",16);
  649. while(1)
  650. {
  651. mp_receive_data(ReceiveBuff, &rlen);
  652. if(uart_dev.frameok==1)//如果接收到數(shù)據(jù)
  653. {
  654. ee_printf("收到數(shù)據(jù):");
  655. OLED_ShowString(0,2,"in:",16);
  656. Uart_Send(UART1,(uint8_t *)ReceiveBuff,rlen);
  657. OLED_ShowString(28,2,(uint8_t *)ReceiveBuff,16);
  658. ee_printf("rn");
  659. uint8_t aton= (uint8_t)ReceiveBuff[0];
  660. uint32_t data=0;
  661. switch (aton) {
  662. case 111://"o"
  663. if(1==rlen) break;
  664. if(ReceiveBuff[1]=='n')
  665. {
  666. GPIO_Write(GPIOA,PIN8,GPIO_RESET);
  667. ee_printf("燈開了!rn");
  668. }
  669. else if((ReceiveBuff[1]=='f')&&(ReceiveBuff[2]=='f'))
  670. {
  671. GPIO_Write(GPIOA,PIN8,GPIO_SET);
  672. ee_printf("關(guān)燈了!rn");
  673. }
  674. else
  675. {
  676. ee_printf("請輸入:on 或者off (開燈/關(guān)燈)rn");
  677. }
  678. break;
  679. case 48://"0"
  680. ee_printf("nRTC_MTIME->mtimelo:%u n",_REG32(RTC_MTIME,0));
  681. ee_printf("nRTC_MTIME->mtimehi:%u n",_REG32(0x0200bff8UL,4));
  682. // uint64_t mtime1=RTC_MTIME->mtime;
  683. // ee_printf("nRTC_MTIME->mtime-all:%lu n",mtime1);
  684. break;
  685. default:
  686. break;
  687. }
  688. // if((ReceiveBuff[0]=='o')&&(ReceiveBuff[1]=='n'))
  689. // {
  690. // GPIO_Write(GPIOA,PIN8,GPIO_RESET);
  691. // ee_printf("燈開了!rn");
  692. // }
  693. // else if((ReceiveBuff[0]=='o')&&(ReceiveBuff[1]=='f')&&(ReceiveBuff[2]=='f'))
  694. // {
  695. // GPIO_Write(GPIOA,PIN8,GPIO_SET);
  696. // ee_printf("關(guān)燈了!rn");
  697. // }
  698. // else
  699. // {
  700. // ee_printf("請輸入:on 或者off (開燈/關(guān)燈)rn");
  701. // }
  702. uart_dev.frameok=0;
  703. uart_dev.rxlen=0;
  704. }
  705. if( rt_tick_get()%1000==0) ee_printf("time is %u s n",rt_tick_get()/1000);
  706. if(!( rt_tick_get()- rt_tick1< 10000)){
  707. rt_tick1 = rt_tick_get() ;
  708. GPIO_Toggle(GPIOB,PIN8);
  709. GPIO_Toggle(GPIOA,PIN10); //GPIO 翻轉(zhuǎn)
  710. // ee_printf("mcycle:%u n",read_csr(mcycle));
  711. ee_printf("rt_tick_get:%u n", rt_tick_get());
  712. ee_printf("RTC_MTIME->mtime:%lu ",RTC_MTIME->mtime);
  713. // ee_printf("type?RTC_MTIME->mtime:%lu n",type(RTC_MTIME->mtime));
  714. ee_printf("RTC_MTIME->mtime0-7B:");
  715. for (uint8_t i = 0; i < 8; i++)
  716. {
  717. ee_printf("%x ",_REG8(0x0200bff8UL,i));
  718. }
  719. ee_printf("nRTC_MTIME->mtime:%u n",_REG32(0x0200bff8UL,4));
  720. ee_printf("RTC_MTIMECMP->mtimecmp:%lu n",RTC_MTIMECMP->mtimecmp);
  721. // ee_printf("type?RTC_MTIME->mtime:%lu n",type(RTC_MTIMECMP->mtimecmp));
  722. ee_printf("->?RTC_MTIME->mtime:%p n",RTC_MTIMECMP->mtimecmp);
  723. ee_printf("RTC_MTIMECMP->mtimecmp0-7B:");
  724. for (uint8_t i = 0; i < 8; i++)
  725. {
  726. ee_printf("%x ",_REG8(0x02004000UL,i));
  727. }
  728. ee_printf(" n");
  729. }
  730. // Delay32M_ms(500);
  731. //Delay16M_ms(500);
  732. //Delay16M_us(500000);
  733. //GPIO_Toggle(GPIOA,PIN15);
  734. //printf("main:rn");
  735. ///---- Chapter 6 EXIT test ---------------------------------------------------------------------------------
  736. //delay16M_ms(500);
  737. //GPIO_Toggle(GPIOA,PIN15);
  738. ///---- Chapter 8 IWDG test ---------------------------------------------------------------------------------
  739. //IWDG_Refresh();
  740. //delay16M_ms(500);
  741. //GPIO_Toggle(GPIOA,PIN15);
  742. ///---- Chapter 9 Timer test --------------------------------------------------------------------------------
  743. //---- soft break --------------------------------------------------------------------------------------
  744. //delay16M_ms(100);
  745. //TIMER2->BDTR |= 1 <<15;//BDTR[15]-MOE-主輸出使能:0-關(guān)閉,1-使能
  746. //delay16M_ms(100);
  747. //TIMER2->EGR |= 1 <<7;//EGR[7]-BG-產(chǎn)生剎車事件
  748. //---- soft COM ----------------------------------------------------------------------------------------
  749. //delay16M_ms(100);
  750. //TIMER2->EGR = 1 <<5;//EGR[5]-COMG-捕獲/比較事件,產(chǎn)生控制更新
  751. //---- generate oxr ------------------------------------------------------------------------------------
  752. /*
  753. Delay16M_ms(10);//1
  754. GPIO_Write(GPIOA,PIN9,GPIO_SET);
  755. GPIO_Write(GPIOA,PIN11,GPIO_RESET);
  756. GPIO_Write(GPIOA,PIN13,GPIO_SET);
  757. Delay16M_ms(10);//2
  758. GPIO_Write(GPIOA,PIN9,GPIO_SET);
  759. GPIO_Write(GPIOA,PIN11,GPIO_RESET);
  760. GPIO_Write(GPIOA,PIN13,GPIO_RESET);
  761. Delay16M_ms(10);//3
  762. GPIO_Write(GPIOA,PIN9,GPIO_SET);
  763. GPIO_Write(GPIOA,PIN11,GPIO_SET);
  764. GPIO_Write(GPIOA,PIN13,GPIO_RESET);
  765. Delay16M_ms(10);//4
  766. GPIO_Write(GPIOA,PIN9,GPIO_RESET);
  767. GPIO_Write(GPIOA,PIN11,GPIO_SET);
  768. GPIO_Write(GPIOA,PIN13,GPIO_RESET);
  769. Delay16M_ms(10);//5
  770. GPIO_Write(GPIOA,PIN9,GPIO_RESET);
  771. GPIO_Write(GPIOA,PIN11,GPIO_SET);
  772. GPIO_Write(GPIOA,PIN13,GPIO_SET);
  773. Delay16M_ms(10);//6
  774. GPIO_Write(GPIOA,PIN9,GPIO_RESET);
  775. GPIO_Write(GPIOA,PIN11,GPIO_RESET);
  776. GPIO_Write(GPIOA,PIN13,GPIO_SET);
  777. */
  778. ///---- Chapter 11 ADC test ---------------------------------------------------------------------------------
  779. ///---- Chapter 12 I2C test ---------------------------------------------------------------------------------
  780. //I2C_Write(0x2d,0x55);//適用于非中斷模式
  781. //i2c_data = I2C_Read(0x2d);//適用于非中斷模式
  782. //printf("data:%xrn",i2c_data);
  783. //I2C_Write(0x2d,0xaa);//適用于非中斷模式
  784. //i2c_data = I2C_Read(0x2d);//適用于非中斷模式
  785. //printf("data:%xrn",i2c_data);
  786. //I2C_Write_IT(0x2d,0x55);//適用于中斷模式
  787. ///---- Chapter 13 SPI test --------------------------------------------------------------------------------
  788. //SPI1 Test
  789. //SPI_Transceive(SPI1,sTxpack,sRxpack,10);//非中斷模式
  790. //SPI1_RW_reg(WRITE_REG+0x05,0x53);//讀寫Si24R1寄存器
  791. //REG_Data = SPI1_RW_reg(READ_REG+0x05,0);//讀寫Si24R1寄存器
  792. //printf("rnREG5:%02x",REG_Data);
  793. //delay16M_ms(500);
  794. //SPI2 Test
  795. //SPI_Transceive(SPI2,sTxpack,sRxpack,10);//非中斷模式
  796. //SPI2_RW_reg(WRITE_REG+0x05,0x53);//讀寫Si24R1寄存器
  797. //REG_Data = SPI2_RW_reg(READ_REG+0x05,0);//讀寫Si24R1寄存器
  798. //printf("rnREG5:%02x",REG_Data);
  799. //delay16M_ms(500);
  800. ///---- Chapter 15 UART Test ------------------------------------------------------------------------------------
  801. //---- 非中斷模式數(shù)據(jù)回環(huán)測試 -------------------------------------------------------------------------------------
  802. //Uart_Reveive(UART1,upack1,10);//適用于非中斷發(fā)送模式
  803. //Uart_Send(UART1,upack1,10);//適用于非中斷發(fā)送模式
  804. //Uart_Reveive(UART2,upack2,10);//適用于非中斷發(fā)送模式
  805. //Uart_Send(UART2,upack2,10);//適用于非中斷發(fā)送模式
  806. //Uart_Reveive(UART3,upack3,10);//適用于非中斷發(fā)送模式
  807. //Uart_Send(UART3,upack3,10);//適用于非中斷發(fā)送模式
  808. //Uart_Reveive(UART4,upack4,10);//適用于非中斷發(fā)送模式
  809. //Uart_Send(UART4,upack4,10);//適用于非中斷發(fā)送模式
  810. //---- 中斷模式數(shù)據(jù)回環(huán)測試 --------------------------------------------------------------------------------------
  811. //UART1_putbuf(UART1_getbuf());
  812. //---- printf測試 ----------------------------------------------------------------------------------------
  813. //printf("Hellow-01234568789abcdefghijklmnopqrstuvwxyzrn");
  814. ///---- Chapter 17 RANDGEN test -----------------------------------------------------------------------------
  815. //rand_data = RAND_Get();//生成隨機(jī)數(shù)
  816. //printf("rand:0x%08x,%urn",rand_data,rand_data);
  817. //delay16M_ms(500);
  818. ///---- Chapter 18 COMPARE test -----------------------------------------------------------------------------
  819. //if(COMP1->irq&0x1)
  820. //{
  821. //GPIO_Toggle(GPIOA,PIN15);
  822. //COMP1->irq = 1;
  823. //}
  824. //delay16M_ms(10);
  825. }
  826. return 0;
  827. }
復(fù)制代碼

pYYBAGIDYJeAXnguAAJm6KpW4M4352.png
poYBAGIDYVCABk08AABEk5Mxom8209.jpg

com:

Hello CSM32RV20:
mcycle:112549883
read_csr(mcycle):2
CMU->OSC_SR:d2
CMU->OSC_SR:210,OSC 時鐘已穩(wěn)定,RCOSC 時鐘已穩(wěn)定,:OSC 在為 MCU 提供時鐘;OSC 在為外設(shè)提供時鐘;
請輸入:on ???者off (開燈/關(guān)燈)

收到數(shù)據(jù):

rt_tick_get:11529
RTC_MTIME->mtime:36899472 RTC_MTIME->mtime0-7B:4a 4c 33 2 0 0 0 0
RTC_MTIME->mtime:0
RTC_MTIMECMP->mtimecmp:36934400
->?RTC_MTIME->mtime:0233b880
RTC_MTIMECMP->mtimecmp0-7B:0 3 34 2 0 0 0 0
val:95avr:14062100 13.9mV 2047.5mV

time:0 day 0 hour' 0:16
收到數(shù)據(jù):0


RTC_MTIME->mtimelo:63461288

RTC_MTIME->mtimehi:0
rt_tick_get:21537
RTC_MTIME->mtime:68924127 RTC_MTIME->mtime0-7B:99 f5 1b 4 0 0 0 0
RTC_MTIME->mtime:0
RTC_MTIMECMP->mtimecmp:68960000
->?RTC_MTIME->mtime:041c6480
RTC_MTIMECMP->mtimecmp0-7B:0 a3 1c 4 0 0 0 0

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 南京中科微
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    709
  • CSM32RV20
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    192
收藏 人收藏

    評論

    相關(guān)推薦

    哪位大佬能提供一下中科CSM32RV003單片機(jī)開發(fā)系統(tǒng)中g(shù)pio.h文件的中文解釋,及用法

    初學(xué)南京中科CSM32RV003單片機(jī),對其龐大的h文件庫和C文件庫搞得一頭霧水,即使有高手指點一二,也是很困難,但搞清了h文件庫,C文件也就明白了,這些對入門的人來說算不了什么,但
    發(fā)表于 10-26 09:47

    CSM32RV003 單片機(jī)輸入功能的使用

    前言 大家好。 首先,感謝南京中科提供的CSM32RV003開發(fā)板及cjlink調(diào)試器,同時也感謝發(fā)燒友提供的
    發(fā)表于 10-25 16:13

    中科CSM32RV003綠色開發(fā)板免費體驗】IDE使用及流水燈程序演示

    【RISC-V】中科CSM32RV003綠色開發(fā)板IDE使用及流水燈程序演示 流水燈代碼 #include \"headfile.h\" int main(void
    發(fā)表于 10-23 19:26

    中科CSM32RV003綠色開發(fā)板免費體驗】環(huán)境配置

    CSM32RV003】中科CSM32RV003綠色開發(fā)板環(huán)境配置 視頻中詳細(xì)介紹了開發(fā)板
    發(fā)表于 10-23 19:17

    【LuckFox Pico 開發(fā)板免費試用】點亮OLED

    與 env.txt 文件 3.拷貝上述兩文件至燒錄鏡像文件替換原來的,重新燒錄固件到SD卡,燒錄成功后插上開發(fā)板 4.應(yīng)用程序代碼準(zhǔn)備 使用的oled是128*32點陣,參照官方
    發(fā)表于 10-22 12:00

    中科CSM32RV003綠色開發(fā)板免費體驗】3.使用流程

    CSM32RV003綠色開發(fā)板免費體驗】1.上手【中科CSM32RV003綠色開發(fā)板免費體驗】
    發(fā)表于 10-14 00:05

    中科CSM32RV003綠色開發(fā)板UART測試

    開發(fā)板南京中科
    Youzhiyu
    發(fā)布于 :2023年10月11日 11:00:12

    中科CSM32RV003綠色開發(fā)板免費體驗】+環(huán)境安裝與第一個示例程序測試

    需要對中科CSM32RV003綠色開發(fā)板進(jìn)行開發(fā)測試,首先需要建立開發(fā)環(huán)境。
    發(fā)表于 10-11 10:09

    中科CSM32RV003綠色開發(fā)板免費體驗】+ISP下載測試

    在收到中科CSM32RV003綠色開發(fā)板后,首先到官網(wǎng)和技術(shù)支持信群尋找資料。要實現(xiàn)CSM32RV
    發(fā)表于 10-11 08:58

    中科CSM32RV003綠色開發(fā)板免費體驗】2.RISC-V RV32IMAC內(nèi)核

    CSM32RV003綠色開發(fā)板免費體驗】1.上手 我要感謝南京中科微電子有限公司提供的CSM32RV003綠色
    發(fā)表于 10-10 00:03

    中科CSM32RV003綠色開發(fā)板免費體驗】 開箱和安裝工具帖

    我申請項目:滑翔傘空中速率計。 我于2023年9月9日下午收到中科CSM32RV003開發(fā)板快遞包裹。拿回后立馬打開包裹,出現(xiàn)南京
    發(fā)表于 10-09 23:34

    中科CSM32RV003綠色開發(fā)板免費體驗】1.上手

    首先,我要感謝南京中科微電子有限公司提供的CSM32RV003綠色開發(fā)板試用機(jī)會,這讓我有機(jī)會深入了解并使用該公司的產(chǎn)品。經(jīng)過幾天的熟悉和
    發(fā)表于 10-09 23:21

    中科CSM32RV003綠色開發(fā)板免費體驗】開發(fā)板使用3彩燈

    接上文 【中科CSM32RV003綠色開發(fā)板免費體驗】開發(fā)板使用2 官方例程SYSTICK_I
    發(fā)表于 09-28 07:04

    中科CSM32RV003綠色開發(fā)板免費體驗】第二貼-CSM Stduio使用、ISP下載固件及C-Jlink進(jìn)行調(diào)試

    非常感謝南京中科提供的試用機(jī)會,經(jīng)過幾天的熟悉,本期將對CSM Studio的基礎(chǔ)使用、CSM
    發(fā)表于 09-27 20:26

    中科CSM32RV003綠色開發(fā)板免費體驗】拓展篇--oled驅(qū)動顯示

    本帖最后由 1653149838.791300 于 2023-9-26 14:14 編輯 本篇在上篇基礎(chǔ)上,用 CSM32RV003模擬I2C驅(qū)動oled顯示1.硬件搭建 硬件接圖展示如下
    發(fā)表于 09-26 11:25