浏览代码

add 2in13_V3 example code (stm32)

SSYYL 4 年之前
父节点
当前提交
127ad0cecb

文件差异内容过多而无法显示
+ 20 - 20
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong


+ 112 - 88
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx

@@ -243,7 +243,7 @@
 
   <Group>
     <GroupName>Application/MDK-ARM</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -263,7 +263,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -546,6 +546,18 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Examples\EPD_2in13_V3_test.c</PathWithFileName>
+      <FilenameWithoutPath>EPD_2in13_V3_test.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>25</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
       <PathWithFileName>..\User\Examples\EPD_2in13b_V3_test.c</PathWithFileName>
       <FilenameWithoutPath>EPD_2in13b_V3_test.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -553,7 +565,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -565,7 +577,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -577,7 +589,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -589,7 +601,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -601,7 +613,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -613,7 +625,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -625,7 +637,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -637,7 +649,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -649,7 +661,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -661,7 +673,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -673,7 +685,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -685,7 +697,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -697,7 +709,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -709,7 +721,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -721,7 +733,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -733,7 +745,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -745,7 +757,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -757,7 +769,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -769,7 +781,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -781,7 +793,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -793,7 +805,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -807,13 +819,13 @@
 
   <Group>
     <GroupName>e-Paper</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -825,7 +837,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>48</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -837,7 +849,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>49</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -849,7 +861,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>50</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -861,7 +873,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>51</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -873,7 +885,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>52</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -885,7 +897,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -897,7 +909,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -909,7 +921,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -921,7 +933,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -933,7 +945,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -945,7 +957,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -957,7 +969,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -969,7 +981,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -981,7 +993,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>60</FileNumber>
+      <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -993,7 +1005,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>61</FileNumber>
+      <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1005,7 +1017,19 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>62</FileNumber>
+      <FileNumber>63</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\e-Paper\EPD_2in13_V3.c</PathWithFileName>
+      <FilenameWithoutPath>EPD_2in13_V3.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1017,7 +1041,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>63</FileNumber>
+      <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1029,7 +1053,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>64</FileNumber>
+      <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1041,7 +1065,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>65</FileNumber>
+      <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1053,7 +1077,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>66</FileNumber>
+      <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1065,7 +1089,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>67</FileNumber>
+      <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1077,7 +1101,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>68</FileNumber>
+      <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1089,7 +1113,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>69</FileNumber>
+      <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1101,7 +1125,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>70</FileNumber>
+      <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1113,7 +1137,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>71</FileNumber>
+      <FileNumber>73</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1125,7 +1149,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>72</FileNumber>
+      <FileNumber>74</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1137,7 +1161,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>73</FileNumber>
+      <FileNumber>75</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1149,7 +1173,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>74</FileNumber>
+      <FileNumber>76</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1161,7 +1185,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>75</FileNumber>
+      <FileNumber>77</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1173,7 +1197,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>76</FileNumber>
+      <FileNumber>78</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1185,7 +1209,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>77</FileNumber>
+      <FileNumber>79</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1197,7 +1221,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>78</FileNumber>
+      <FileNumber>80</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1209,7 +1233,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>79</FileNumber>
+      <FileNumber>81</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1221,7 +1245,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>80</FileNumber>
+      <FileNumber>82</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1233,7 +1257,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>81</FileNumber>
+      <FileNumber>83</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1245,7 +1269,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>82</FileNumber>
+      <FileNumber>84</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1265,7 +1289,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>83</FileNumber>
+      <FileNumber>85</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1285,7 +1309,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>84</FileNumber>
+      <FileNumber>86</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1305,7 +1329,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>85</FileNumber>
+      <FileNumber>87</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1317,7 +1341,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>86</FileNumber>
+      <FileNumber>88</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1329,7 +1353,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>87</FileNumber>
+      <FileNumber>89</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1341,7 +1365,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>88</FileNumber>
+      <FileNumber>90</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1353,7 +1377,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>89</FileNumber>
+      <FileNumber>91</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1365,7 +1389,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>90</FileNumber>
+      <FileNumber>92</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1377,7 +1401,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>91</FileNumber>
+      <FileNumber>93</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1397,7 +1421,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>92</FileNumber>
+      <FileNumber>94</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1409,7 +1433,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>93</FileNumber>
+      <FileNumber>95</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1429,7 +1453,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>94</FileNumber>
+      <FileNumber>96</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1449,7 +1473,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>95</FileNumber>
+      <FileNumber>97</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1461,7 +1485,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>96</FileNumber>
+      <FileNumber>98</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1473,7 +1497,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>97</FileNumber>
+      <FileNumber>99</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1485,7 +1509,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>98</FileNumber>
+      <FileNumber>100</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1497,7 +1521,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>99</FileNumber>
+      <FileNumber>101</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1509,7 +1533,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>100</FileNumber>
+      <FileNumber>102</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1521,7 +1545,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>101</FileNumber>
+      <FileNumber>103</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1533,7 +1557,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>102</FileNumber>
+      <FileNumber>104</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1545,7 +1569,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>103</FileNumber>
+      <FileNumber>105</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1557,7 +1581,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>104</FileNumber>
+      <FileNumber>106</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1569,7 +1593,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>105</FileNumber>
+      <FileNumber>107</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1581,7 +1605,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>106</FileNumber>
+      <FileNumber>108</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1593,7 +1617,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>107</FileNumber>
+      <FileNumber>109</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1605,7 +1629,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>108</FileNumber>
+      <FileNumber>110</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1617,7 +1641,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>109</FileNumber>
+      <FileNumber>111</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 10 - 0
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx

@@ -506,6 +506,11 @@
               <FileType>1</FileType>
               <FilePath>..\User\Examples\EPD_2in13_V2_test.c</FilePath>
             </File>
+            <File>
+              <FileName>EPD_2in13_V3_test.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Examples\EPD_2in13_V3_test.c</FilePath>
+            </File>
             <File>
               <FileName>EPD_2in13b_V3_test.c</FileName>
               <FileType>1</FileType>
@@ -701,6 +706,11 @@
               <FileType>1</FileType>
               <FilePath>..\User\e-Paper\EPD_2in13_V2.c</FilePath>
             </File>
+            <File>
+              <FileName>EPD_2in13_V3.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\e-Paper\EPD_2in13_V3.c</FilePath>
+            </File>
             <File>
               <FileName>EPD_2in13bc.c</FileName>
               <FileType>1</FileType>

+ 3 - 4
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm

@@ -21,14 +21,13 @@ Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0
 Dialog DLL:      TCM.DLL V1.35.1.0
  
 <h2>Project:</h2>
-E:\project\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
-Project File Date:  07/19/2021
+E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
+Project File Date:  11/01/2021
 
 <h2>Output:</h2>
 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
 Build target 'epd-demo'
 compiling main.c...
-compiling EPD_1in54_V2.c...
 linking...
 Program Size: Code=18544 RO-data=360 RW-data=20 ZI-data=4252  
 FromELF: creating hex file...
@@ -55,7 +54,7 @@ Package Vendor: Keil
 <h2>Collection of Component Files used:</h2>
 
    * Component: ARM::CMSIS:CORE:5.4.0
-Build Time Elapsed:  00:00:03
+Build Time Elapsed:  00:00:02
 </pre>
 </body>
 </html>

+ 12 - 12
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm

@@ -3,11 +3,11 @@
 <title>Static Call Graph - [epd-demo\epd-demo.axf]</title></head>
 <body><HR>
 <H1>Static Call Graph for image epd-demo\epd-demo.axf</H1><HR>
-<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Wed Aug 11 14:53:17 2021
+<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Mon Nov 01 17:16:49 2021
 <BR><P>
 <H3>Maximum Stack Usage =        124 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
 Call chain for Maximum Stack Depth:</H3>
-main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq
 <P>
 <H3>
 Mutually Recursive functions
@@ -354,7 +354,7 @@ Global Symbols
 </UL>
 
 <P><STRONG><a name="[6c]"></a>SystemClock_Config</STRONG> (Thumb, 88 bytes, Stack size 72 bytes, main.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 124<LI>Call Chain = SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+<BR><BR>[Stack]<UL><LI>Max Depth = 124<LI>Call Chain = SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq
 </UL>
 <BR>[Calls]<UL><LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
 <LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
@@ -365,7 +365,7 @@ Global Symbols
 </UL>
 
 <P><STRONG><a name="[46]"></a>main</STRONG> (Thumb, 32 bytes, Stack size 0 bytes, main.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 124<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+<BR><BR>[Stack]<UL><LI>Max Depth = 124<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq
 </UL>
 <BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
 <LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
@@ -632,8 +632,8 @@ Global Symbols
 </UL>
 <BR>[Called By]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
 <LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
-<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SetTickFreq
 <LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_DeInit
+<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SetTickFreq
 </UL>
 
 <P><STRONG><a name="[70]"></a>HAL_Init</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal.o(.text))
@@ -725,15 +725,15 @@ Global Symbols
 <P><STRONG><a name="[f8]"></a>HAL_DBGMCU_DisableDBGStandbyMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
 
 <P><STRONG><a name="[a7]"></a>HAL_RCC_DeInit</STRONG> (Thumb, 250 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
-<BR><BR>[Calls]<UL><LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<BR><BR>[Calls]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
 </UL>
 
 <P><STRONG><a name="[6e]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 1080 bytes, Stack size 40 bytes, stm32f1xx_hal_rcc.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = HAL_RCC_OscConfig &rArr; RCC_Delay
 </UL>
-<BR>[Calls]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCC_Delay
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<BR>[Calls]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCC_Delay
 </UL>
 <BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
 </UL>
@@ -745,11 +745,11 @@ Global Symbols
 </UL>
 
 <P><STRONG><a name="[6f]"></a>HAL_RCC_ClockConfig</STRONG> (Thumb, 364 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = HAL_RCC_ClockConfig &rArr; HAL_InitTick &rArr; HAL_NVIC_SetPriority
+<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq
 </UL>
-<BR>[Calls]<UL><LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
+<BR>[Calls]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
 <LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
+<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
 </UL>
 <BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
 </UL>

+ 90 - 60
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map

@@ -214,6 +214,18 @@ Section Cross References
     epd_2in13_v2_test.o(.text) refers to font12cn.o(.data) for Font12CN
     epd_2in13_v2_test.o(.text) refers to font24cn.o(.data) for Font24CN
     epd_2in13_v2_test.o(.text) refers to font20.o(.data) for Font20
+    epd_2in13_v3_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in13_v3_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init
+    epd_2in13_v3_test.o(.text) refers to epd_2in13_v3.o(.text) for EPD_2in13_V3_Init
+    epd_2in13_v3_test.o(.text) refers to malloc.o(i.malloc) for malloc
+    epd_2in13_v3_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
+    epd_2in13_v3_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in13_v3_test.o(.text) refers to malloc.o(i.free) for free
+    epd_2in13_v3_test.o(.text) refers to imagedata.o(.constdata) for gImage_2in13
+    epd_2in13_v3_test.o(.text) refers to font16.o(.data) for Font16
+    epd_2in13_v3_test.o(.text) refers to font12cn.o(.data) for Font12CN
+    epd_2in13_v3_test.o(.text) refers to font24cn.o(.data) for Font24CN
+    epd_2in13_v3_test.o(.text) refers to font20.o(.data) for Font20
     epd_2in13b_v3_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
     epd_2in13b_v3_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init
     epd_2in13b_v3_test.o(.text) refers to epd_2in13b_v3.o(.text) for EPD_2IN13B_V3_Init
@@ -563,6 +575,11 @@ Section Cross References
     epd_2in13_v2.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
     epd_2in13_v2.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
     epd_2in13_v2.o(.text) refers to epd_2in13_v2.o(.constdata) for .constdata
+    epd_2in13_v3.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in13_v3.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
+    epd_2in13_v3.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in13_v3.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
+    epd_2in13_v3.o(.text) refers to epd_2in13_v3.o(.data) for .data
     epd_2in13bc.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
     epd_2in13bc.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_2in13bc.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
@@ -1116,6 +1133,10 @@ Removing Unused input sections from the image.
     Removing epd_2in13_v2_test.o(.revsh_text), (4 bytes).
     Removing epd_2in13_v2_test.o(.rrx_text), (6 bytes).
     Removing epd_2in13_v2_test.o(.text), (1012 bytes).
+    Removing epd_2in13_v3_test.o(.rev16_text), (4 bytes).
+    Removing epd_2in13_v3_test.o(.revsh_text), (4 bytes).
+    Removing epd_2in13_v3_test.o(.rrx_text), (6 bytes).
+    Removing epd_2in13_v3_test.o(.text), (1064 bytes).
     Removing epd_2in13b_v3_test.o(.rev16_text), (4 bytes).
     Removing epd_2in13b_v3_test.o(.revsh_text), (4 bytes).
     Removing epd_2in13b_v3_test.o(.rrx_text), (6 bytes).
@@ -1280,6 +1301,11 @@ Removing Unused input sections from the image.
     Removing epd_2in13_v2.o(.rrx_text), (6 bytes).
     Removing epd_2in13_v2.o(.text), (1072 bytes).
     Removing epd_2in13_v2.o(.constdata), (152 bytes).
+    Removing epd_2in13_v3.o(.rev16_text), (4 bytes).
+    Removing epd_2in13_v3.o(.revsh_text), (4 bytes).
+    Removing epd_2in13_v3.o(.rrx_text), (6 bytes).
+    Removing epd_2in13_v3.o(.text), (1078 bytes).
+    Removing epd_2in13_v3.o(.data), (318 bytes).
     Removing epd_2in13bc.o(.rev16_text), (4 bytes).
     Removing epd_2in13bc.o(.revsh_text), (4 bytes).
     Removing epd_2in13bc.o(.rrx_text), (6 bytes).
@@ -1455,7 +1481,7 @@ Removing Unused input sections from the image.
     Removing cdrcmple.o(.text), (48 bytes).
     Removing depilogue.o(.text), (186 bytes).
 
-460 unused section(s) (total 958763 bytes) removed from the image.
+469 unused section(s) (total 961251 bytes) removed from the image.
 
 ==============================================================================
 
@@ -1487,40 +1513,40 @@ Image Symbol Table
     ../Src/stm32f1xx_it.c                    0x00000000   Number         0  stm32f1xx_it.o ABSOLUTE
     ../Src/system_stm32f1xx.c                0x00000000   Number         0  system_stm32f1xx.o ABSOLUTE
     ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
-    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
+    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
-    ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
-    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
-    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
     ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
     ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
     ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
     ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
@@ -1562,6 +1588,7 @@ Image Symbol Table
     ..\User\Examples\EPD_1in54b_test.c       0x00000000   Number         0  epd_1in54b_test.o ABSOLUTE
     ..\User\Examples\EPD_1in54c_test.c       0x00000000   Number         0  epd_1in54c_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13_V2_test.c     0x00000000   Number         0  epd_2in13_v2_test.o ABSOLUTE
+    ..\User\Examples\EPD_2in13_V3_test.c     0x00000000   Number         0  epd_2in13_v3_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13_test.c        0x00000000   Number         0  epd_2in13_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13b_V3_test.c    0x00000000   Number         0  epd_2in13b_v3_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13bc_test.c      0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
@@ -1609,6 +1636,7 @@ Image Symbol Table
     ..\User\e-Paper\EPD_1in54c.c             0x00000000   Number         0  epd_1in54c.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13.c              0x00000000   Number         0  epd_2in13.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13_V2.c           0x00000000   Number         0  epd_2in13_v2.o ABSOLUTE
+    ..\User\e-Paper\EPD_2in13_V3.c           0x00000000   Number         0  epd_2in13_v3.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13b_V3.c          0x00000000   Number         0  epd_2in13b_v3.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13bc.c            0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13d.c             0x00000000   Number         0  epd_2in13d.o ABSOLUTE
@@ -1646,6 +1674,7 @@ Image Symbol Table
     ..\\User\\Examples\\EPD_1in54b_test.c    0x00000000   Number         0  epd_1in54b_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_1in54c_test.c    0x00000000   Number         0  epd_1in54c_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13_V2_test.c  0x00000000   Number         0  epd_2in13_v2_test.o ABSOLUTE
+    ..\\User\\Examples\\EPD_2in13_V3_test.c  0x00000000   Number         0  epd_2in13_v3_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13_test.c     0x00000000   Number         0  epd_2in13_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13b_V3_test.c 0x00000000   Number         0  epd_2in13b_v3_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13bc_test.c   0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
@@ -1685,6 +1714,7 @@ Image Symbol Table
     ..\\User\\e-Paper\\EPD_1in54c.c          0x00000000   Number         0  epd_1in54c.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13.c           0x00000000   Number         0  epd_2in13.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13_V2.c        0x00000000   Number         0  epd_2in13_v2.o ABSOLUTE
+    ..\\User\\e-Paper\\EPD_2in13_V3.c        0x00000000   Number         0  epd_2in13_v3.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13b_V3.c       0x00000000   Number         0  epd_2in13b_v3.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13bc.c         0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13d.c          0x00000000   Number         0  epd_2in13d.o ABSOLUTE
@@ -2137,15 +2167,15 @@ Memory Map of the image
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
     0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
-    0x08000130   0x08000130   0x00000000   Code   RO         2860  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
-    0x08000130   0x08000130   0x00000004   Code   RO         3160    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
-    0x08000134   0x08000134   0x00000004   Code   RO         3163    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3165    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3167    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
-    0x08000138   0x08000138   0x00000008   Code   RO         3168    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3170    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3172    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
-    0x08000140   0x08000140   0x00000004   Code   RO         3161    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
+    0x08000130   0x08000130   0x00000000   Code   RO         2914  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
+    0x08000130   0x08000130   0x00000004   Code   RO         3214    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
+    0x08000134   0x08000134   0x00000004   Code   RO         3217    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3219    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3221    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
+    0x08000138   0x08000138   0x00000008   Code   RO         3222    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3224    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3226    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
+    0x08000140   0x08000140   0x00000004   Code   RO         3215    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
     0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
     0x08000168   0x08000168   0x00000094   Code   RO           13    .text               main.o
     0x080001fc   0x080001fc   0x00000060   Code   RO          162    .text               gpio.o
@@ -2153,35 +2183,35 @@ Memory Map of the image
     0x08000318   0x08000318   0x000000d8   Code   RO          216    .text               usart.o
     0x080003f0   0x080003f0   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
     0x08000420   0x08000420   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
-    0x0800045c   0x0800045c   0x000000c4   Code   RO         2469    .text               system_stm32f1xx.o
-    0x08000520   0x08000520   0x000015e8   Code   RO         2525    .text               stm32f1xx_hal_spi.o
-    0x08001b08   0x08001b08   0x00000188   Code   RO         2549    .text               stm32f1xx_hal.o
-    0x08001c90   0x08001c90   0x000008c8   Code   RO         2579    .text               stm32f1xx_hal_rcc.o
-    0x08002558   0x08002558   0x000003d4   Code   RO         2627    .text               stm32f1xx_hal_gpio.o
-    0x0800292c   0x0800292c   0x00000c48   Code   RO         2651    .text               stm32f1xx_hal_dma.o
-    0x08003574   0x08003574   0x00000224   Code   RO         2675    .text               stm32f1xx_hal_cortex.o
-    0x08003798   0x08003798   0x00000f9c   Code   RO         2839    .text               stm32f1xx_hal_uart.o
-    0x08004734   0x08004734   0x00000024   Code   RO         2867    .text               mc_w.l(memseta.o)
-    0x08004758   0x08004758   0x0000002c   Code   RO         3175    .text               mc_w.l(uidiv.o)
-    0x08004784   0x08004784   0x00000024   Code   RO         3192    .text               mc_w.l(init.o)
-    0x080047a8   0x080047a8   0x00000020   Code   RO         2960    i.__0printf$3       mc_w.l(printf3.o)
-    0x080047c8   0x080047c8   0x0000000e   Code   RO         3202    i.__scatterload_copy  mc_w.l(handlers.o)
-    0x080047d6   0x080047d6   0x00000002   Code   RO         3203    i.__scatterload_null  mc_w.l(handlers.o)
-    0x080047d8   0x080047d8   0x0000000e   Code   RO         3204    i.__scatterload_zeroinit  mc_w.l(handlers.o)
+    0x0800045c   0x0800045c   0x000000c4   Code   RO         2523    .text               system_stm32f1xx.o
+    0x08000520   0x08000520   0x000015e8   Code   RO         2579    .text               stm32f1xx_hal_spi.o
+    0x08001b08   0x08001b08   0x00000188   Code   RO         2603    .text               stm32f1xx_hal.o
+    0x08001c90   0x08001c90   0x000008c8   Code   RO         2633    .text               stm32f1xx_hal_rcc.o
+    0x08002558   0x08002558   0x000003d4   Code   RO         2681    .text               stm32f1xx_hal_gpio.o
+    0x0800292c   0x0800292c   0x00000c48   Code   RO         2705    .text               stm32f1xx_hal_dma.o
+    0x08003574   0x08003574   0x00000224   Code   RO         2729    .text               stm32f1xx_hal_cortex.o
+    0x08003798   0x08003798   0x00000f9c   Code   RO         2893    .text               stm32f1xx_hal_uart.o
+    0x08004734   0x08004734   0x00000024   Code   RO         2921    .text               mc_w.l(memseta.o)
+    0x08004758   0x08004758   0x0000002c   Code   RO         3229    .text               mc_w.l(uidiv.o)
+    0x08004784   0x08004784   0x00000024   Code   RO         3246    .text               mc_w.l(init.o)
+    0x080047a8   0x080047a8   0x00000020   Code   RO         3014    i.__0printf$3       mc_w.l(printf3.o)
+    0x080047c8   0x080047c8   0x0000000e   Code   RO         3256    i.__scatterload_copy  mc_w.l(handlers.o)
+    0x080047d6   0x080047d6   0x00000002   Code   RO         3257    i.__scatterload_null  mc_w.l(handlers.o)
+    0x080047d8   0x080047d8   0x0000000e   Code   RO         3258    i.__scatterload_zeroinit  mc_w.l(handlers.o)
     0x080047e6   0x080047e6   0x00000002   PAD
-    0x080047e8   0x080047e8   0x000001b8   Code   RO         2967    i._printf_core      mc_w.l(printf3.o)
-    0x080049a0   0x080049a0   0x00000010   Data   RO         2470    .constdata          system_stm32f1xx.o
-    0x080049b0   0x080049b0   0x00000008   Data   RO         2471    .constdata          system_stm32f1xx.o
-    0x080049b8   0x080049b8   0x00000020   Data   RO         3200    Region$$Table       anon$$obj.o
+    0x080047e8   0x080047e8   0x000001b8   Code   RO         3021    i._printf_core      mc_w.l(printf3.o)
+    0x080049a0   0x080049a0   0x00000010   Data   RO         2524    .constdata          system_stm32f1xx.o
+    0x080049b0   0x080049b0   0x00000008   Data   RO         2525    .constdata          system_stm32f1xx.o
+    0x080049b8   0x080049b8   0x00000020   Data   RO         3254    Region$$Table       anon$$obj.o
 
 
     Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080049d8, Size: 0x000010b0, Max: 0x00010000, ABSOLUTE)
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
-    0x20000000   0x080049d8   0x00000004   Data   RW         2472    .data               system_stm32f1xx.o
-    0x20000004   0x080049dc   0x0000000c   Data   RW         2550    .data               stm32f1xx_hal.o
-    0x20000010   0x080049e8   0x00000004   Data   RW         3174    .data               mc_w.l(stdout.o)
+    0x20000000   0x080049d8   0x00000004   Data   RW         2526    .data               system_stm32f1xx.o
+    0x20000004   0x080049dc   0x0000000c   Data   RW         2604    .data               stm32f1xx_hal.o
+    0x20000010   0x080049e8   0x00000004   Data   RW         3228    .data               mc_w.l(stdout.o)
     0x20000014        -       0x00000058   Zero   RW          187    .bss                spi.o
     0x2000006c        -       0x00000040   Zero   RW          217    .bss                usart.o
     0x200000ac   0x080049ec   0x00000004   PAD
@@ -2196,23 +2226,23 @@ Image component sizes
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
 
         96         10          0          0          0        803   gpio.o
-       148         20          0          0          0     461082   main.o
-       188         18          0          0         88       1437   spi.o
+       148         20          0          0          0     461070   main.o
+       188         18          0          0         88       1429   spi.o
         36          8        304          0       4096        796   startup_stm32f103xe.o
        392         38          0         12          0       7649   stm32f1xx_hal.o
-       548         12          0          0          0      30678   stm32f1xx_hal_cortex.o
+       548         12          0          0          0      30674   stm32f1xx_hal_cortex.o
       3144        164          0          0          0       7109   stm32f1xx_hal_dma.o
        980         30          0          0          0       4391   stm32f1xx_hal_gpio.o
-        60          8          0          0          0        830   stm32f1xx_hal_msp.o
+        60          8          0          0          0        826   stm32f1xx_hal_msp.o
       2248         88          0          0          0       6559   stm32f1xx_hal_rcc.o
       5608        106          0          0          0      19625   stm32f1xx_hal_spi.o
-      3996         46          0          0          0      17436   stm32f1xx_hal_uart.o
+      3996         46          0          0          0      17432   stm32f1xx_hal_uart.o
         48         22          0          0          0       1246   stm32f1xx_it.o
-       196         28         24          4          0       1517   system_stm32f1xx.o
+       196         28         24          4          0       1509   system_stm32f1xx.o
        216         18          0          0         64       1753   usart.o
 
     ----------------------------------------------------------------------
-     17904        616        360         16       4252     562911   Object Totals
+     17904        616        360         16       4252     562871   Object Totals
          0          0         32          0          0          0   (incl. Generated)
          0          0          0          0          4          0   (incl. Padding)
 
@@ -2255,8 +2285,8 @@ Image component sizes
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
 
-     18544        646        360         20       4252     561995   Grand Totals
-     18544        646        360         20       4252     561995   ELF Image Totals
+     18544        646        360         20       4252     561955   Grand Totals
+     18544        646        360         20       4252     561955   ELF Image Totals
      18544        646        360         20          0          0   ROM Totals
 
 ==============================================================================

+ 1 - 0
STM32/STM32-F103ZET6/Src/main.c

@@ -114,6 +114,7 @@ int main(void)
 
 //		EPD_2in13_test();
 //		EPD_2in13_V2_test();
+// 		EPD_2in13_V3_test();
 //		EPD_2in13bc_test();
 //		EPD_2in13b_V3_test();
 //		EPD_2in13d_test();

+ 149 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_2in13_V3_test.c

@@ -0,0 +1,149 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13_V3_test.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper V3 test demo
+* | Info        :
+*----------------
+* |	This version:   V1.1
+* | Date        :   2021-10-30
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_Test.h"
+#include "EPD_2in13_V3.h"
+
+int EPD_2in13_V3_test(void)
+{
+    Debug("EPD_2in13_V3_test Demo\r\n");
+    if(DEV_Module_Init()!=0){
+        return -1;
+    }
+
+    Debug("e-Paper Init and Clear...\r\n");
+		EPD_2in13_V3_Init();
+    EPD_2in13_V3_Clear();
+
+    //Create a new image cache
+    UBYTE *BlackImage;
+    UWORD Imagesize = ((EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1)) * EPD_2in13_V3_HEIGHT;
+    if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
+        Debug("Failed to apply for black memory...\r\n");
+        return -1;
+    }
+    Debug("Paint_NewImage\r\n");
+    Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE);
+		Paint_Clear(WHITE);
+
+#if 1   //show image for array    
+    Debug("show image for array\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(WHITE);
+    Paint_DrawBitMap(gImage_2in13);
+
+    EPD_2in13_V3_Display(BlackImage);
+    DEV_Delay_ms(2000);
+#endif
+
+#if 1  // Drawing on the image
+	Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE);  	
+    Debug("Drawing\r\n");
+    //1.Select Image
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(WHITE);
+	
+    // 2.Drawing on the image
+    Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT);
+
+    Paint_DrawLine(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 10, 20, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(85, 10, 135, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawLine(45, 15, 45, 55, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(25, 35, 70, 35, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawCircle(45, 35, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(110, 35, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawString_EN(140, 15, "waveshare", &Font16, BLACK, WHITE);
+    Paint_DrawNum(140, 40, 123456789, &Font16, BLACK, WHITE);
+
+    Paint_DrawString_CN(140, 60, "ÄãºÃabc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(5, 65, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+
+    EPD_2in13_V3_Display_Base(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   //Partial refresh, example shows time
+	Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE);  
+    Debug("Partial refresh\r\n");
+    Paint_SelectImage(BlackImage);
+	
+    PAINT_TIME sPaint_time;
+    sPaint_time.Hour = 12;
+    sPaint_time.Min = 34;
+    sPaint_time.Sec = 56;
+    UBYTE num = 10;
+    for (;;) {
+        sPaint_time.Sec = sPaint_time.Sec + 1;
+        if (sPaint_time.Sec == 60) {
+            sPaint_time.Min = sPaint_time.Min + 1;
+            sPaint_time.Sec = 0;
+            if (sPaint_time.Min == 60) {
+                sPaint_time.Hour =  sPaint_time.Hour + 1;
+                sPaint_time.Min = 0;
+                if (sPaint_time.Hour == 24) {
+                    sPaint_time.Hour = 0;
+                    sPaint_time.Min = 0;
+                    sPaint_time.Sec = 0;
+                }
+            }
+        }
+        Paint_ClearWindows(150, 80, 150 + Font20.Width * 7, 80 + Font20.Height, WHITE);
+        Paint_DrawTime(150, 80, &sPaint_time, &Font20, WHITE, BLACK);
+
+        num = num - 1;
+        if(num == 0) {
+            break;
+        }
+		EPD_2in13_V3_Display_Partial(BlackImage);
+        DEV_Delay_ms(500);//Analog clock 1s
+    }
+#endif
+
+	Debug("Clear...\r\n");
+	EPD_2in13_V3_Init();
+    EPD_2in13_V3_Clear();
+	
+    Debug("Goto Sleep...\r\n");
+    EPD_2in13_V3_Sleep();
+    free(BlackImage);
+    BlackImage = NULL;
+    DEV_Delay_ms(2000);//important, at least 2s
+    // close 5V
+    Debug("close 5V, Module enters 0 power consumption ...\r\n");
+    DEV_Module_Exit();
+    return 0;
+}
+

+ 1 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_Test.h

@@ -56,6 +56,7 @@ int EPD_2in9d_test(void);
 
 int EPD_2in13_test(void);
 int EPD_2in13_V2_test(void);
+int EPD_2in13_V3_test(void);
 int EPD_2in13bc_test(void);
 int EPD_2in13b_V3_test(void);
 int EPD_2in13d_test(void);

+ 374 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.c

@@ -0,0 +1,374 @@
+/*****************************************************************************
+* | File      	:  	EPD_2in13_V3.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper V3
+* | Info        :
+*----------------
+* |	This version:   V1.1
+* | Date        :   2021-10-30
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in13_V3.h"
+#include "Debug.h"
+
+UBYTE WF_PARTIAL_2IN13_V3[159] =
+{
+	0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x14,0x0,0x0,0x0,0x0,0x0,0x0,  
+	0x1,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x1,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+	0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,
+	0x22,0x17,0x41,0x00,0x32,0x36,
+};
+
+UBYTE WS_20_30_2IN13_V3[159] =
+{											
+	0x80,	0x4A,	0x40,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+	0x40,	0x4A,	0x80,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+	0x80,	0x4A,	0x40,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+	0x40,	0x4A,	0x80,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+	0xF,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0xF,	0x0,	0x0,	0xF,	0x0,	0x0,	0x2,					
+	0xF,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+	0x22,	0x22,	0x22,	0x22,	0x22,	0x22,	0x0,	0x0,	0x0,			
+	0x22,	0x17,	0x41,	0x0,	0x32,	0x36						
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2in13_V3_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2in13_V3_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2in13_V3_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+	while(1)
+	{	 //=1 BUSY
+		if(DEV_Digital_Read(EPD_BUSY_PIN)==0) 
+			break;
+		DEV_Delay_ms(10);
+	}
+	DEV_Delay_ms(10);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2in13_V3_TurnOnDisplay(void)
+{
+	EPD_2in13_V3_SendCommand(0x22); // Display Update Control
+	EPD_2in13_V3_SendData(0xc7);
+	EPD_2in13_V3_SendCommand(0x20); // Activate Display Update Sequence
+	EPD_2in13_V3_ReadBusy();
+}
+
+static void EPD_2in13_V3_TurnOnDisplay_Partial(void)
+{
+	EPD_2in13_V3_SendCommand(0x22); // Display Update Control
+	EPD_2in13_V3_SendData(0x0f);	// fast:0x0c, quality:0x0f, 0xcf
+	EPD_2in13_V3_SendCommand(0x20); // Activate Display Update Sequence
+	EPD_2in13_V3_ReadBusy();
+}
+
+static void EPD_2IN13_V3_LUT(UBYTE *lut)
+{
+	UBYTE count;
+	EPD_2in13_V3_SendCommand(0x32);
+	for(count=0; count<153; count++) 
+		EPD_2in13_V3_SendData(lut[count]); 
+	EPD_2in13_V3_ReadBusy();
+}
+
+static void EPD_2IN13_V2_LUT_by_host(UBYTE *lut)
+{
+	EPD_2IN13_V3_LUT((UBYTE *)lut);			//lut
+	EPD_2in13_V3_SendCommand(0x3f);
+	EPD_2in13_V3_SendData(*(lut+153));
+	EPD_2in13_V3_SendCommand(0x03);	// gate voltage
+	EPD_2in13_V3_SendData(*(lut+154));
+	EPD_2in13_V3_SendCommand(0x04);	// source voltage
+	EPD_2in13_V3_SendData(*(lut+155));	// VSH
+	EPD_2in13_V3_SendData(*(lut+156));	// VSH2
+	EPD_2in13_V3_SendData(*(lut+157));	// VSL
+	EPD_2in13_V3_SendCommand(0x2c);		// VCOM
+	EPD_2in13_V3_SendData(*(lut+158));
+}
+
+/******************************************************************************
+function :	Setting the display window
+parameter:
+******************************************************************************/
+static void EPD_2in13_V3_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+    EPD_2in13_V3_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+    EPD_2in13_V3_SendData((Xstart>>3) & 0xFF);
+    EPD_2in13_V3_SendData((Xend>>3) & 0xFF);
+	
+    EPD_2in13_V3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+    EPD_2in13_V3_SendData(Ystart & 0xFF);
+    EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF);
+    EPD_2in13_V3_SendData(Yend & 0xFF);
+    EPD_2in13_V3_SendData((Yend >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Set Cursor
+parameter:
+******************************************************************************/
+static void EPD_2in13_V3_SetCursor(UWORD Xstart, UWORD Ystart)
+{
+    EPD_2in13_V3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER
+    EPD_2in13_V3_SendData(Xstart & 0xFF);
+
+    EPD_2in13_V3_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER
+    EPD_2in13_V3_SendData(Ystart & 0xFF);
+    EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_Init(void)
+{
+	EPD_2in13_V3_Reset();
+	DEV_Delay_ms(100);
+
+	EPD_2in13_V3_ReadBusy();   
+	EPD_2in13_V3_SendCommand(0x12);  //SWRESET
+	EPD_2in13_V3_ReadBusy();   
+
+	EPD_2in13_V3_SendCommand(0x01); //Driver output control      
+	EPD_2in13_V3_SendData(0xf9);
+	EPD_2in13_V3_SendData(0x00);
+	EPD_2in13_V3_SendData(0x00);
+
+	EPD_2in13_V3_SendCommand(0x11); //data entry mode       
+	EPD_2in13_V3_SendData(0x03);
+
+	EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1);
+	EPD_2in13_V3_SetCursor(0, 0);
+	
+	EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom
+	EPD_2in13_V3_SendData(0x05);	
+
+	EPD_2in13_V3_SendCommand(0x21); //  Display update control
+	EPD_2in13_V3_SendData(0x00);
+	EPD_2in13_V3_SendData(0x80);	
+
+	EPD_2in13_V3_SendCommand(0x18); //Read built-in temperature sensor
+	EPD_2in13_V3_SendData(0x80);	
+
+	EPD_2in13_V3_ReadBusy();
+	EPD_2IN13_V2_LUT_by_host(WS_20_30_2IN13_V3);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_Clear(void)
+{
+	UWORD Width, Height;
+    Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1);
+    Height = EPD_2in13_V3_HEIGHT;
+	
+    EPD_2in13_V3_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2in13_V3_SendData(0XFF);
+        }
+    }	
+
+	EPD_2in13_V3_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_Display(UBYTE *Image)
+{
+	UWORD Width, Height;
+    Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1);
+    Height = EPD_2in13_V3_HEIGHT;
+	
+    EPD_2in13_V3_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2in13_V3_SendData(Image[i + j * Width]);
+        }
+    }	
+	
+	EPD_2in13_V3_TurnOnDisplay();	
+}
+
+
+/******************************************************************************
+function :	Refresh a base image
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_Display_Base(UBYTE *Image)
+{  
+	UWORD Width, Height;
+    Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1);
+    Height = EPD_2in13_V3_HEIGHT;
+	
+	EPD_2in13_V3_SendCommand(0x24);   //Write Black and White image to RAM
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {        
+			EPD_2in13_V3_SendData(Image[i + j * Width]);
+		}
+	}
+	EPD_2in13_V3_SendCommand(0x26);   //Write Black and White image to RAM
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+			EPD_2in13_V3_SendData(Image[i + j * Width]);
+		}
+	}
+	EPD_2in13_V3_TurnOnDisplay();	
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and partial refresh
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_Display_Partial(UBYTE *Image)
+{
+	UWORD Width, Height;
+    Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1);
+    Height = EPD_2in13_V3_HEIGHT;
+	
+	//Reset
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(1);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+
+	EPD_2IN13_V2_LUT_by_host(WF_PARTIAL_2IN13_V3);
+
+	EPD_2in13_V3_SendCommand(0x37); 
+	EPD_2in13_V3_SendData(0x00);  
+	EPD_2in13_V3_SendData(0x00);  
+	EPD_2in13_V3_SendData(0x00);  
+	EPD_2in13_V3_SendData(0x00); 
+	EPD_2in13_V3_SendData(0x00);  
+	EPD_2in13_V3_SendData(0x40);  ///RAM Ping-Pong enable 
+	EPD_2in13_V3_SendData(0x00);  
+	EPD_2in13_V3_SendData(0x00);   
+	EPD_2in13_V3_SendData(0x00);  
+	EPD_2in13_V3_SendData(0x00);
+
+	EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom
+	EPD_2in13_V3_SendData(0x80);	
+
+	EPD_2in13_V3_SendCommand(0x22); //Display Update Sequence Option
+	EPD_2in13_V3_SendData(0xC0);    // Enable clock and  Enable analog
+	EPD_2in13_V3_SendCommand(0x20);  //Activate Display Update Sequence
+	EPD_2in13_V3_ReadBusy();  
+	
+	EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1);
+	EPD_2in13_V3_SetCursor(0, 0);
+
+	EPD_2in13_V3_SendCommand(0x24);   //Write Black and White image to RAM
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+			EPD_2in13_V3_SendData(Image[i + j * Width]);
+		}
+	}
+	EPD_2in13_V3_TurnOnDisplay_Partial();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2in13_V3_Sleep(void)
+{
+	EPD_2in13_V3_SendCommand(0x10); //enter deep sleep
+	EPD_2in13_V3_SendData(0x01); 
+	DEV_Delay_ms(100);
+}

+ 47 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.h

@@ -0,0 +1,47 @@
+/*****************************************************************************
+* | File      	:   EPD_2Iin13_V3.h
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper V3
+* | Info        :
+*----------------
+* |	This version:   V1.1
+* | Date        :   2021-10-30
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2in13_V3_H_
+#define __EPD_2in13_V3_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2in13_V3_WIDTH       122
+#define EPD_2in13_V3_HEIGHT      250
+
+void EPD_2in13_V3_Init(void);
+void EPD_2in13_V3_Clear(void);
+void EPD_2in13_V3_Display(UBYTE *Image);
+void EPD_2in13_V3_Display_Base(UBYTE *Image);
+void EPD_2in13_V3_Display_Partial(UBYTE *Image);
+void EPD_2in13_V3_Sleep(void);
+
+#endif

部分文件因为文件数量过多而无法显示