TIM6_1MS.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. #include "TIM6_1MS.h"
  2. #include "bsp.h"
  3. #include "app_def.h"
  4. #define BusTx_Check_STATE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)
  5. extern unsigned char TIM1_Rev_flag; //表示正在接收总线数据,0表示当前未接收,1表示当前正在接收。
  6. extern unsigned int LocalTime;
  7. unsigned char CallLineMode =0 ;
  8. U08 gtackvalid = 0;
  9. U08 gfxq_cmd =0;
  10. unsigned char BUS_SendBuf[4]; //应用层发送数据
  11. unsigned char BUS_SendBitBuf[30]; //应用层发送中断位
  12. //============================================
  13. static unsigned char BUS_SendInex=0;
  14. // static unsigned char BUS_SendingBuf[4]; //定时器正在处理数据
  15. static void s_frmBusTxNull(U16 prm) ;
  16. static void s_frmBusTxEntenData4(U16 prm) ;
  17. static void s_frmBusTxEntenData5(U16 prm) ;
  18. static void s_frmBusTxEntenData6(U16 prm) ;
  19. static void s_frmBusTxEntenData7(U16 prm) ;
  20. static void s_frmBusTxEntenData8(U16 prm) ;
  21. static void s_frmBusTxEntenData9(U16 prm) ;
  22. static void s_frmBusTxRegeditQuest(U16 prm) ;
  23. static void s_frmBusTxRegeditState(U16 prm) ;
  24. static void s_frmBusTxCallMode(U16 prm) ;
  25. static void s_frmBusTxEntenData20(U16 prm) ;
  26. static void s_frmBusTxEntenData21(U16 prm) ;
  27. static void s_frmBusTxSigAck(U16 prm);
  28. static void s_frmBusTxEveAck(U16 prm) ;
  29. static void s_frmBusTxFxq1(U16 prm);
  30. static void s_frmBusTxFxq2(U16 prm);
  31. //============================================
  32. unsigned char Bus_SendStart=0;
  33. int TIM6_init(void)
  34. {
  35. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  36. NVIC_InitTypeDef NVIC_InitStructure;
  37. GPIO_InitTypeDef GPIO_InitStructure;
  38. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
  39. TIM_DeInit(TIM6);
  40. TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; //72000000/72=1M
  41. TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  42. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  43. TIM_TimeBaseStructure.TIM_Period = 100 - 1; //初始值 F=1M/100=10KHz
  44. TIM_TimeBaseInit(TIM6,&TIM_TimeBaseStructure);
  45. //=========================================================
  46. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  47. TIM_ITConfig(TIM6,TIM_IT_Update,DISABLE);
  48. TIM_ClearFlag(TIM6, TIM_FLAG_Update);
  49. NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;
  50. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  51. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  52. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  53. NVIC_Init(&NVIC_InitStructure);
  54. TIM_Cmd(TIM6, ENABLE);
  55. //=========================================================
  56. //PA9用于主端发码
  57. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  58. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  59. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  60. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  61. GPIO_Init(GPIOA, &GPIO_InitStructure);
  62. GPIO_ResetBits(GPIOA,GPIO_Pin_9);
  63. //PA8 用于检测发码情况
  64. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  65. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  66. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  67. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  68. GPIO_Init(GPIOA, &GPIO_InitStructure);
  69. gtackvalid =0;
  70. return 1;
  71. }
  72. void BUS_SendData(T_BUS_FRAME c)
  73. {
  74. unsigned char i=0;
  75. //===========================
  76. // while(BUS_SendInex>0);
  77. // while(TIM1_Rev_flag>0);
  78. //===========================
  79. i = HI_BYTE(c.DaddressDate);
  80. i += LO_BYTE(c.DaddressDate);
  81. c.DataType &=0x0F;
  82. i += c.DataType ;
  83. c.DataType |=((i&0x0F)<<4);
  84. //===========================
  85. BUS_SendBuf[0]=HI_BYTE(c.DaddressDate);
  86. BUS_SendBuf[1]= LO_BYTE(c.DaddressDate);
  87. BUS_SendBuf[2]= c.DataType;
  88. // 处理数据
  89. BUS_SendBitBuf[0] = ((BUS_SendBuf[0] >>0) &0x01);
  90. BUS_SendBitBuf[1] = ((BUS_SendBuf[0] >>1) &0x01);
  91. BUS_SendBitBuf[2] = ((BUS_SendBuf[0] >>2) &0x01);
  92. BUS_SendBitBuf[3] = ((BUS_SendBuf[0] >>3) &0x01);
  93. BUS_SendBitBuf[4] = ((BUS_SendBuf[0] >>4) &0x01);
  94. BUS_SendBitBuf[5] = ((BUS_SendBuf[0] >>5) &0x01);
  95. BUS_SendBitBuf[6] = ((BUS_SendBuf[0] >>6) &0x01);
  96. BUS_SendBitBuf[7] = ((BUS_SendBuf[0] >>7) &0x01);
  97. BUS_SendBitBuf[8] = ((BUS_SendBuf[1] >>0) &0x01);
  98. BUS_SendBitBuf[9] = ((BUS_SendBuf[1] >>1) &0x01);
  99. BUS_SendBitBuf[10] = ((BUS_SendBuf[1] >>2) &0x01);
  100. BUS_SendBitBuf[11] = ((BUS_SendBuf[1] >>3) &0x01);
  101. BUS_SendBitBuf[12] = ((BUS_SendBuf[1] >>4) &0x01);
  102. BUS_SendBitBuf[13] = ((BUS_SendBuf[1] >>5) &0x01);
  103. BUS_SendBitBuf[14] = ((BUS_SendBuf[1] >>6) &0x01);
  104. BUS_SendBitBuf[15] = ((BUS_SendBuf[1] >>7) &0x01);
  105. BUS_SendBitBuf[16] = ((BUS_SendBuf[2] >>0) &0x01);
  106. BUS_SendBitBuf[17] = ((BUS_SendBuf[2] >>1) &0x01);
  107. BUS_SendBitBuf[18] = ((BUS_SendBuf[2] >>2) &0x01);
  108. BUS_SendBitBuf[19] = ((BUS_SendBuf[2] >>3) &0x01);
  109. BUS_SendBitBuf[20] = ((BUS_SendBuf[2] >>4) &0x01);
  110. BUS_SendBitBuf[21] = ((BUS_SendBuf[2] >>5) &0x01);
  111. BUS_SendBitBuf[22] = ((BUS_SendBuf[2] >>6) &0x01);
  112. BUS_SendBitBuf[23] = ((BUS_SendBuf[2] >>7) &0x01);
  113. //===========================
  114. Bus_SendStart=1;
  115. }
  116. void BUS_SendData2(T_BUS_FRAME c)
  117. {
  118. unsigned char i=0;
  119. //===========================
  120. // while(BUS_SendInex>0);
  121. // while(TIM1_Rev_flag>0);
  122. //===========================
  123. c.DataType &=0x0F;
  124. //===========================
  125. BUS_SendBuf[0]= (c.DataType <<4);
  126. BUS_SendBuf[0] |= (HI_BYTE(c.DaddressDate)>>4);
  127. BUS_SendBuf[1] = ((HI_BYTE(c.DaddressDate)&0x0f) <<4);
  128. BUS_SendBuf[1] |= (LO_BYTE(c.DaddressDate)>>4);
  129. BUS_SendBuf[2]= (LO_BYTE(c.DaddressDate)&0x0f);
  130. i=(BUS_SendBuf[0]+ BUS_SendBuf[1]+(BUS_SendBuf[2]&0x0F))&0x0F;
  131. BUS_SendBuf[2] |= ((i&0x0F)<<4);
  132. // BUS_SendBuf[0]=HI_BYTE(c.DaddressDate);
  133. // BUS_SendBuf[1]= LO_BYTE(c.DaddressDate);
  134. // BUS_SendBuf[2]= c.DataType;
  135. // 处理数据
  136. BUS_SendBitBuf[0] = ((BUS_SendBuf[0] >>0) &0x01);
  137. BUS_SendBitBuf[1] = ((BUS_SendBuf[0] >>1) &0x01);
  138. BUS_SendBitBuf[2] = ((BUS_SendBuf[0] >>2) &0x01);
  139. BUS_SendBitBuf[3] = ((BUS_SendBuf[0] >>3) &0x01);
  140. BUS_SendBitBuf[4] = ((BUS_SendBuf[0] >>4) &0x01);
  141. BUS_SendBitBuf[5] = ((BUS_SendBuf[0] >>5) &0x01);
  142. BUS_SendBitBuf[6] = ((BUS_SendBuf[0] >>6) &0x01);
  143. BUS_SendBitBuf[7] = ((BUS_SendBuf[0] >>7) &0x01);
  144. BUS_SendBitBuf[8] = ((BUS_SendBuf[1] >>0) &0x01);
  145. BUS_SendBitBuf[9] = ((BUS_SendBuf[1] >>1) &0x01);
  146. BUS_SendBitBuf[10] = ((BUS_SendBuf[1] >>2) &0x01);
  147. BUS_SendBitBuf[11] = ((BUS_SendBuf[1] >>3) &0x01);
  148. BUS_SendBitBuf[12] = ((BUS_SendBuf[1] >>4) &0x01);
  149. BUS_SendBitBuf[13] = ((BUS_SendBuf[1] >>5) &0x01);
  150. BUS_SendBitBuf[14] = ((BUS_SendBuf[1] >>6) &0x01);
  151. BUS_SendBitBuf[15] = ((BUS_SendBuf[1] >>7) &0x01);
  152. BUS_SendBitBuf[16] = ((BUS_SendBuf[2] >>0) &0x01);
  153. BUS_SendBitBuf[17] = ((BUS_SendBuf[2] >>1) &0x01);
  154. BUS_SendBitBuf[18] = ((BUS_SendBuf[2] >>2) &0x01);
  155. BUS_SendBitBuf[19] = ((BUS_SendBuf[2] >>3) &0x01);
  156. BUS_SendBitBuf[20] = ((BUS_SendBuf[2] >>4) &0x01);
  157. BUS_SendBitBuf[21] = ((BUS_SendBuf[2] >>5) &0x01);
  158. BUS_SendBitBuf[22] = ((BUS_SendBuf[2] >>6) &0x01);
  159. BUS_SendBitBuf[23] = ((BUS_SendBuf[2] >>7) &0x01);
  160. //===========================
  161. Bus_SendStart=1;
  162. }
  163. void BUSMODE_SendTick(void)
  164. {
  165. static U08 laytime =0;
  166. static U08 u8cnt1 =0;
  167. static U08 u8cnt2 =0;
  168. static U08 u8line =0xff;
  169. static U08 u8oldline =0xff;
  170. laytime ++;
  171. if ( laytime <30) //35*30 =1s
  172. {
  173. return;
  174. } else {
  175. laytime = 100;
  176. }
  177. GpioLineCheckInputVal();
  178. if (GpioLineCheckInputVal()) {
  179. u8cnt1 ++;
  180. u8cnt2 =0;
  181. if (u8cnt1 >30) {
  182. u8cnt1 =0;
  183. u8line = 1; //3线
  184. if ( u8line == u8oldline) {
  185. return;
  186. }
  187. CallLineMode =1; //1:三线制 0:两线制
  188. u8oldline =1;
  189. OSQPost(BusMsgQueue, BUS_MSG_CALLMODE, TO_WORD(0xff,'Y'));
  190. OSQPost(BusMsgQueue, BUS_MSG_CALLMODE, TO_WORD(0xff,'Y'));
  191. OSQPost(BusMsgQueue, BUS_MSG_CALLMODE, TO_WORD(0xff, 'Y'));
  192. GpioSwLineOutput_L;
  193. }
  194. } else {
  195. u8cnt2 ++;
  196. u8cnt1 =0;
  197. if (u8cnt2 >30) {
  198. u8cnt2 =0;
  199. u8line = 0; //2线
  200. if ( u8line == u8oldline) {
  201. return;
  202. }
  203. CallLineMode =0; //1:三线制 0:两线制
  204. u8oldline =0;
  205. OSQPost(BusMsgQueue, BUS_MSG_CALLMODE, TO_WORD(0xff, 'N'));
  206. OSQPost(BusMsgQueue, BUS_MSG_CALLMODE, TO_WORD(0xff, 'N'));
  207. OSQPost(BusMsgQueue, BUS_MSG_CALLMODE, TO_WORD(0xff, 'N'));
  208. GpioSwLineOutput_H;
  209. }
  210. }
  211. }
  212. //注:1ms中断 改0.1ms中断
  213. void TIM6_IRQHandler (void)
  214. {
  215. static U08 flag=0;
  216. if(TIM_GetITStatus(TIM6, TIM_IT_Update)== SET)
  217. {
  218. TIM_ClearITPendingBit(TIM6 , TIM_FLAG_Update);
  219. //==================================================
  220. if(flag>=10)
  221. {
  222. GPIOA->BSRR = GPIO_Pin_9; //总线为低电平
  223. flag--;
  224. return;
  225. }
  226. else if((flag<=9) && (flag!=0))
  227. {
  228. GPIOA->BRR = GPIO_Pin_9; //总线为高电平
  229. flag --;
  230. return;
  231. }
  232. if((BUS_SendInex>0)&&(flag==0))
  233. {
  234. if(BUS_SendInex==1) //起始位:总线5ms低电平
  235. {
  236. flag=41;//41-9 =3.3ms
  237. GPIOA->BSRR = GPIO_Pin_9;
  238. BUS_SendInex++;
  239. }
  240. else if(BUS_SendInex<(24+3))
  241. {
  242. if (BUS_SendBitBuf[BUS_SendInex-2]) { //数据位1:2ms低电平
  243. flag= 27;
  244. } else { //数据位0:1ms低电平
  245. flag= 17;
  246. }
  247. GPIOA->BSRR = GPIO_Pin_9;
  248. BUS_SendInex++;
  249. }
  250. else if(BUS_SendInex==(24+3))
  251. {
  252. flag=0;
  253. GPIOA->BRR = GPIO_Pin_9;
  254. BUS_SendInex++;
  255. }
  256. else
  257. {
  258. BUS_SendInex=0;
  259. GPIOA->BRR = GPIO_Pin_9;
  260. flag=0;
  261. TIM_ITConfig(TIM6,TIM_IT_Update,DISABLE);
  262. }
  263. }
  264. //==================================================
  265. }
  266. }
  267. const fp_prm arryBusTxTbl[NomOfBusTxMsg] = {
  268. s_frmBusTxNull,
  269. s_frmBusTxEntenData4, //BUS_MSG_EXTENDATA4
  270. s_frmBusTxEntenData5, //BUS_MSG_EXTENDATA5
  271. s_frmBusTxEntenData6, //BUS_MSG_EXTENDATA6
  272. s_frmBusTxEntenData7, //BUS_MSG_EXTENDATA7
  273. s_frmBusTxEntenData8, //BUS_MSG_EXTENDATA8
  274. s_frmBusTxEntenData9, //BUS_MSG_EXTENDATA9
  275. s_frmBusTxRegeditQuest, //BUS_MSG_REGEDITQUEST
  276. s_frmBusTxRegeditState, //BUS_MSG_REGEDITSTATE
  277. s_frmBusTxCallMode, // BUS_MSG_CALLMODE
  278. s_frmBusTxEntenData20, //BUS_MSG_EXTENDATA20
  279. s_frmBusTxEntenData21, //BUS_MSG_EXTENDATA21
  280. s_frmBusTxSigAck, //BUS_MSG_SIGINACK
  281. s_frmBusTxEveAck, //BUS_MSG_EVEACK
  282. s_frmBusTxFxq1, //BUS_MSG_FXQ1
  283. s_frmBusTxFxq2, //BUS_MSG_FXQ2
  284. };
  285. /*----------------------------------------------------------------------
  286. // Function name : BUS_Rev_TxTask
  287. // Input parameter :
  288. // Output parameter :
  289. // Use Function : 数据约65ms一帧
  290. // Reserve date : 09:18am, 7.July.2019, written by dwd
  291. ----------------------------------------------------------------------*/
  292. void BUS_Rev_TxTask(void)
  293. {
  294. static U08 u8cnt =0;
  295. T_MESSAGE *pmsg;
  296. if (Bus_SendStart ) { //15*(5+1) =90ms后发下一帧90-65,间隔25MS
  297. u8cnt ++;
  298. if (u8cnt >=5) {
  299. u8cnt =0;
  300. Bus_SendStart =0;
  301. }
  302. return;
  303. } else {
  304. u8cnt =0;
  305. }
  306. if (BufSentTime) {
  307. return;
  308. }
  309. pmsg = OSQGet(BusMsgQueue);
  310. if ((pmsg->id) &&(pmsg->id < NomOfBusTxMsg)) {
  311. arryBusTxTbl[pmsg->id](pmsg->prm);
  312. }
  313. }
  314. static void s_frmBusTxNull(U16 prm)
  315. {
  316. prm =prm;
  317. }
  318. static void s_frmBusTxEntenData4(U16 prm)
  319. {
  320. T_BUS_FRAME brm = {0};
  321. brm.DaddressDate = prm;
  322. brm.DataType = 4;
  323. BUS_SendData(brm);
  324. BUS_SendInex=1;
  325. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  326. if (gtackvalid ) {
  327. gtackvalid --;
  328. OSQPost(BusMsgQueue, BUS_MSG_EXTENDATA4, prm);
  329. }
  330. }
  331. static void s_frmBusTxEntenData5(U16 prm)
  332. {
  333. T_BUS_FRAME brm = {0};
  334. brm.DaddressDate = prm;
  335. brm.DataType = 5;
  336. BUS_SendData(brm);
  337. BUS_SendInex=1;
  338. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  339. if (gtackvalid ) {
  340. gtackvalid --;
  341. OSQPost(BusMsgQueue, BUS_MSG_EXTENDATA5, prm);
  342. }
  343. }
  344. static void s_frmBusTxEntenData6(U16 prm)
  345. {
  346. T_BUS_FRAME brm = {0};
  347. brm.DaddressDate = prm;
  348. brm.DataType = 6;
  349. BUS_SendData(brm);
  350. BUS_SendInex=1;
  351. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  352. }
  353. static void s_frmBusTxEntenData7(U16 prm)
  354. {
  355. T_BUS_FRAME brm = {0};
  356. brm.DaddressDate = prm;
  357. brm.DataType = 7;
  358. BUS_SendData(brm);
  359. BUS_SendInex=1;
  360. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  361. }
  362. static void s_frmBusTxEntenData20(U16 prm)
  363. {
  364. T_BUS_FRAME brm = {0};
  365. brm.DaddressDate = prm;
  366. brm.DataType = 2;
  367. BUS_SendData(brm);
  368. BUS_SendInex=1;
  369. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  370. }
  371. static void s_frmBusTxEntenData21(U16 prm)
  372. {
  373. T_BUS_FRAME brm = {0};
  374. brm.DaddressDate = prm;
  375. brm.DataType = 3;
  376. BUS_SendData(brm);
  377. BUS_SendInex=1;
  378. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  379. }
  380. static void s_frmBusTxSigAck(U16 prm)
  381. {
  382. T_BUS_FRAME brm = {0};
  383. brm.DaddressDate = prm;
  384. brm.DataType = 1;
  385. BUS_SendData(brm);
  386. BUS_SendInex=1;
  387. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  388. }
  389. static void s_frmBusTxEntenData8(U16 prm)
  390. {
  391. T_BUS_FRAME brm = {0};
  392. brm.DaddressDate = prm;
  393. brm.DataType = 8;
  394. BUS_SendData(brm);
  395. BUS_SendInex=1;
  396. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  397. }
  398. static void s_frmBusTxEntenData9(U16 prm)
  399. {
  400. T_BUS_FRAME brm = {0};
  401. brm.DaddressDate = prm;
  402. brm.DataType = 9;
  403. BUS_SendData(brm);
  404. BUS_SendInex=1;
  405. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  406. }
  407. static void s_frmBusTxRegeditQuest(U16 prm)
  408. {
  409. T_BUS_FRAME brm = {0};
  410. brm.DaddressDate = prm;
  411. brm.DataType = 0xd;
  412. BUS_SendData(brm);
  413. BUS_SendInex=1;
  414. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  415. }
  416. static void s_frmBusTxRegeditState(U16 prm)
  417. {
  418. T_BUS_FRAME brm = {0};
  419. brm.DaddressDate = prm;
  420. brm.DataType = 0xe;
  421. BUS_SendData(brm);
  422. BUS_SendInex=1;
  423. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  424. }
  425. static void s_frmBusTxCallMode(U16 prm)
  426. {
  427. T_BUS_FRAME brm = {0};
  428. brm.DaddressDate = prm;
  429. brm.DataType = 0xf;
  430. BUS_SendData(brm);
  431. BUS_SendInex=1;
  432. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  433. }
  434. static void s_frmBusTxEveAck(U16 prm)
  435. {
  436. T_BUS_FRAME brm = {0};
  437. brm.DaddressDate = prm;
  438. brm.DataType = 10;
  439. BUS_SendData(brm);
  440. BUS_SendInex=1;
  441. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  442. }
  443. static void s_frmBusTxFxq1(U16 prm)
  444. {
  445. T_BUS_FRAME brm = {0};
  446. brm.DaddressDate = prm;
  447. brm.DataType = gfxq_cmd;
  448. BUS_SendData2(brm);
  449. BUS_SendInex=1;
  450. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  451. }
  452. static void s_frmBusTxFxq2(U16 prm)
  453. {
  454. T_BUS_FRAME brm = {0};
  455. brm.DaddressDate = prm;
  456. brm.DataType = gfxq_cmd|0x08;
  457. BUS_SendData2(brm);
  458. BUS_SendInex=1;
  459. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
  460. }