放弃

[复制链接]
 楼主| 34af9uc 发表于 2024-5-20 21:22 | 显示全部楼层 |阅读模式
LED, pi, gp, IO, GPIO
暂时放弃了,整不了,怎么编译就是不
  1. /*************HLK-W801-KIT-V1.1********************/
  2. /*************1.3寸OLED IIC************************/
  3. /*************ID:共同学习stm8**********************/
  4. /*************跨平台,一切都是运算*******************/
  5. /*******.******20240421*****************************/

  6. //0X0000 GPIO 数据寄存器 GPIO_DATA RW 读写 GPIO 当前数据 0X180B
  7. #define                GPIOA_DATA                        (*(volatile unsigned int*)(0x40011200+0x0000))
  8. //0X0004 GPIO 数据使能寄存器 GPIO_DATA_EN RW 配置 GPIO_DATA 的使能位 0XFFFF
  9. #define                GPIOA_DATA_EN                (*(volatile unsigned int*)(0x40011200+0X0004))
  10. //0X0008 GPIO 方向控制寄存器 GPIO_DIR RW 配置 GPIO 方向 0X0000
  11. #define                GPIOA_DIR                        (*(volatile unsigned int*)(0x40011200+0X0008))
  12. //0X000C GPIO 上拉控制寄存器 GPIO_PULL_EN RW 配置 GPIO 上拉 0XFFFF
  13. #define                GPIOA_PULL_EN                        (*(volatile unsigned int*)(0x40011200+0X000c))
  14. //0X001C GPIO 下拉控制寄存器 GPIO_DN_ENA RW 配置 GPIO 下拉 0X0000
  15. #define                GPIOA_DN_ENA                        (*(volatile unsigned int*)(0x40011200+0X001c))


  16. //0X0000 GPIO 数据寄存器 GPIO_DATA RW 读写 GPIO 当前数据 0X180B
  17. #define                GPIOB_DATA                        (*(volatile unsigned int*)(0x40011400+0x0000))
  18. //0X0004 GPIO 数据使能寄存器 GPIO_DATA_EN RW 配置 GPIO_DATA 的使能位 0XFFFF
  19. #define                GPIOB_DATA_EN                (*(volatile unsigned int*)(0x40011400+0X0004))
  20. //0X0008 GPIO 方向控制寄存器 GPIO_DIR RW 配置 GPIO 方向 0X0000
  21. #define                GPIOB_DIR                        (*(volatile unsigned int*)(0x40011400+0X0008))
  22. //0X000C GPIO 上拉控制寄存器 GPIO_PULL_EN RW 配置 GPIO 上拉 0XFFFF
  23. #define                GPIOB_PULL_EN                        (*(volatile unsigned int*)(0x40011400+0X000c))
  24. //0X001C GPIO 下拉控制寄存器 GPIO_DN_ENA RW 配置 GPIO 下拉 0X0000
  25. #define                GPIOB_DN_ENA                        (*(volatile unsigned int*)(0x40011400+0X001c))


  26. /**************************************************/
  27. //                         _______________________
  28. //                        |        1.3' OLED IIC                |
  29. //                        |        GND|VCC|SCL|SDA                |
  30. //                        |                128*64                        |
  31. //                        |_______________________|
  32. //数据sda-----PA1
  33. //时钟scl-----PA2
  34. //sda¯¯\__X=7=X===X===X===X===X===X===X=0=X¯\_/X__/¯¯
  35. //scl¯¯¯¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯¯\_/¯¯¯¯
  36. //_____s____1___2___3___4___5___6___7___8__ack____p__
  37. /**************************************************/
  38. void                iic_chushihua();                //iic初始化;
  39. void                iic_qishi();                        //iic起始信号;
  40. void                iic_yingda();                        //iic应答信号;
  41. void                iic_tingzhi();                        //iic停止信号;
  42. void                iic_xie_byte(unsigned char iic_i1);                //iic写一个字节;
  43. void                yanshi_1ms();                        //延时1ms;
  44. void                yanshi_1s();                        //延时1秒;
  45. void                yanshi(unsigned char y1);                //延时
  46. /**************************************************/

  47. //#include <stdio.h>
  48. //#include "wm_hal.h"
  49. int main(void)
  50. {


  51. GPIOA_DATA_EN                        |=(1<<3);
  52. GPIOA_DIR                                |=1<<3;
  53. #define                led_l                GPIOA_DATA        &=~(1<<3)
  54. #define                led_h                GPIOA_DATA        |=(1<<3)

  55. GPIOB_DATA_EN                        |=(1<<5);
  56. GPIOB_DIR                                |=(1<<5);
  57. #define                led_1_l                GPIOB_DATA        &=~(1<<5)
  58. #define                led_1_h                GPIOB_DATA        |=(1<<5)

  59. GPIOB_DATA_EN                        |=(1<<25);
  60. GPIOB_DIR                                |=(1<<25);
  61. #define                led_2_l                GPIOB_DATA        &=~(1<<25)
  62. #define                led_2_h                GPIOB_DATA        |=(1<<25)
  63. /**************************************************/
  64. led_1_h;
  65. led_2_h;

  66. //while(1){};
  67. iic_chushihua();                //iic初始化;
  68. iic_qishi();
  69. iic_xie_byte(0x78);
  70. void                iic_yingda();
  71. iic_tingzhi();
  72. led_1_l;
  73. //led_2_h;
  74. while (1)

  75. {
  76. led_l;
  77. led_1_l;
  78. led_2_l;
  79. yanshi_1s();
  80. //yanshi(10);
  81. led_h;
  82. led_1_h;
  83. led_2_h;
  84. yanshi_1s();
  85. //yanshi(10);
  86. }
  87. return 0;


  88. }


  89. /**************************************************/
  90. void                yanshi_1ms()        //延时1ms;
  91. {
  92. volatile unsigned int                x1=7500;       
  93.         //while(x1 --){ __NOP(); __NOP(); __NOP(); __NOP(); __NOP();}
  94. while(x1 --){};
  95. }

  96. /**************************************************/
  97. void                yanshi_1s()        //延时1秒;
  98. {
  99. volatile unsigned char                z1,z2,z3;
  100. z1                =100;                //循环次数;
  101. do
  102. {
  103.         do
  104.         {
  105.         z2                =100;
  106.         do{z3 =100;} while(z3--);                //细调;
  107.         }
  108.         while(z2--);                //粗调;
  109.        
  110. }
  111. while(z1--);

  112. }
  113. /**************************************************/
  114. void                yanshi(unsigned char y1)                //延时
  115. {
  116. while(y1--)
  117.         {/*
  118.         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();__NOP(); __NOP(); __NOP(); __NOP(); __NOP();
  119.         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();__NOP(); __NOP(); __NOP(); __NOP(); __NOP();
  120.         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();__NOP(); __NOP(); __NOP(); __NOP(); __NOP();
  121.         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();__NOP(); __NOP(); __NOP(); __NOP(); __NOP();
  122.         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();__NOP(); __NOP(); __NOP(); __NOP(); __NOP();
  123.          */
  124.          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  125.         }
  126. }
  127. /**************************************************/
  128. void                iic_chushihua()                //iic初始化;
  129. {
  130. //数据sda-----PA1
  131. //时钟scl-----PA2

  132. //#define                xian_sda_l                GPIOA_DIR        |=(1<<1);        __NOP(); __NOP();        GPIOA_DATA        &=~(1<<1)        /*sda输出,低;*/
  133. //#define                xian_sda_h                GPIOA_DIR        |=(1<<1);        __NOP(); __NOP();        GPIOA_DATA        |=(1<<1)        /*sda输出,高;*/
  134. //#define                xian_sda_shuru        GPIOA_DIR        &=~(1<<1);        __NOP(); __NOP();                                                        /*sda输入,高;*/
  135. //#define                xian_sda_shuju        GPIOA_DATA        &=(1<<1)                                                                                                /*sda,io状态;*/


  136. //#define                xian_scl_l                GPIOA_DIR        |=(1<<2);        __NOP(); __NOP();        GPIOA_DATA        &=~(1<<2)        /*scl输出,低;*/
  137. //#define                xian_scl_h                GPIOA_DIR        |=(1<<2);        __NOP(); __NOP();        GPIOA_DATA        |=(1<<2)        /*scl输出,高;*/
  138. //#define                xian_scl_shuru        GPIOA_DIR        &=~(1<<2);        __NOP(); __NOP();                                                        /*输入,高;*/
  139. //#define                xian_scl_shuju        GPIOA_DATA        &=(1<<2)                                                                                                /*scl,io状态;*/


  140. //#define                sda_l                GPIOA_DIR        |=(1<<1);        __NOP(); __NOP();        GPIOA_DATA        &=~(1<<1)                /*sda输出,低;*/
  141. //#define                sda_h                GPIOA_DIR        &=~(1<<1);        __NOP(); __NOP()                                                                /*sda输入,高;*/
  142. //#define                sda_data        GPIOA_DATA        &(1<<1)


  143. //#define                scl_l                GPIOA_DIR        |=(1<<2);        __NOP(); __NOP();        GPIOA_DATA        &=~(1<<2)                /*scl输出,低;*/
  144. //#define                scl_h                GPIOA_DIR        &=~(1<<2);        __NOP(); __NOP();                                                                /*输入,高;*/
  145. //#define                scl_data        GPIOA_DATA        &(1<<2)


  146. #define                sda_l                GPIOA_DIR        |=(1<<1);                GPIOA_DATA        &=~(1<<1)                /*sda输出,低;*/
  147. #define                sda_h                GPIOA_DIR        &=~(1<<1);                                                                        /*sda输入,高;*/
  148. #define                sda_data        GPIOA_DATA        &(1<<1)


  149. #define                scl_l                GPIOA_DIR        |=(1<<2);                GPIOA_DATA        &=~(1<<2)                /*scl输出,低;*/
  150. #define                scl_h                GPIOA_DIR        &=~(1<<2);                                                                        /*输入,高;*/
  151. #define                scl_data        GPIOA_DATA        &(1<<2)
  152. /**************************************************/

  153. GPIOA_DATA_EN                |=1<<1;                        //sda数据使能;
  154. GPIOA_DATA_EN                |=1<<2;                        //scl时钟使能;
  155. GPIOA_PULL_EN                |=1<<1;                        //sda数据上拉电阻;
  156. GPIOA_PULL_EN                |=1<<2;                        //scl时钟上拉电阻;
  157. yanshi(100);
  158. }




  159. void                iic_qishi()                //iic起始信号;
  160. {
  161. //sda¯¯\__
  162. //scl¯¯¯¯¯
  163. sda_h;
  164. scl_h
  165. yanshi(10);
  166. sda_l;
  167. yanshi(10);
  168. }
  169. void                iic_xie_byte(unsigned char iic_i1)                //iic写一个字节;
  170. {
  171. //sda¯¯\__X=7=X===X===X===X===X===X===X=0=/¯\_/X__/¯¯
  172. //scl¯¯¯¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_/¯¯\_/¯¯¯¯
  173. //_____s____1___2___3___4___5___6___7___8__ack____p__
  174. scl_l;        yanshi(10);        if(iic_i1 &(1<<7)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  175. scl_l;        yanshi(10);        if(iic_i1 &(1<<6)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  176. scl_l;        yanshi(10);        if(iic_i1 &(1<<5)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  177. scl_l;        yanshi(10);        if(iic_i1 &(1<<4)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  178. scl_l;        yanshi(10);        if(iic_i1 &(1<<3)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  179. scl_l;        yanshi(10);        if(iic_i1 &(1<<2)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  180. scl_l;        yanshi(10);        if(iic_i1 &(1<<1)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);
  181. scl_l;        yanshi(10);        if(iic_i1 &(1<<0)){sda_h;} else{sda_l;}        yanshi(10);scl_h;        yanshi(10);

  182. }
  183. void                iic_yingda()                //iic应答信号;
  184. {
  185. //sda/¯\____/
  186. //scl_/¯¯¯¯\_
  187. scl_l;
  188. yanshi(10);
  189. sda_h;
  190. yanshi(10);
  191. scl_h;
  192. yanshi(10);
  193. if(~(sda_data))
  194.         {
  195.         led_1_h;
  196.         //while(1);  //卡死
  197.         }
  198. scl_l;
  199. yanshi(10);

  200. }
  201. /**************************************************/
  202. void                iic_tingzhi()                //iic停止信号;
  203. {
  204. //sdaX\__/¯
  205. //scl\_/¯¯¯
  206. scl_l;
  207. yanshi(10);
  208. sda_l;
  209. yanshi(10);
  210. scl_h;
  211. yanshi(10);
  212. sda_h;
  213. yanshi(10);
  214. }
  215. /**************************************************/
  216. /**************************************************/
  217. /**************************************************/

按想的走,让灯亮就是不亮,想让他卡在那就是不动,也不知道进没进函数

319

主题

487

帖子

63

粉丝
快速回复 在线客服 返回列表 返回顶部

319

主题

487

帖子

63

粉丝
快速回复 在线客服 返回列表 返回顶部