From c7aedab9cdf12f56dd631e860c48cf1e40fee837 Mon Sep 17 00:00:00 2001 From: andrey Date: Thu, 28 May 2026 17:53:50 +0300 Subject: [PATCH] up --- .../schem [20260325, 15-33-14].pdsprj | Bin 0 -> 10786 bytes Project Backups/schem [Autosaved].pdsprj | Bin 12573 -> 16126 bytes john103C6T6NewVer/.mxproject | 32 ++- john103C6T6NewVer/Core/Inc/main.h | 6 +- john103C6T6NewVer/Core/Inc/rtc.h | 52 ----- .../Core/Inc/stm32f1xx_hal_conf.h | 2 +- john103C6T6NewVer/Core/Inc/stm32f1xx_it.h | 2 +- john103C6T6NewVer/Core/Inc/usart.h | 3 + john103C6T6NewVer/Core/Src/dallas_tools.c | 41 ++-- john103C6T6NewVer/Core/Src/gpio.c | 12 +- john103C6T6NewVer/Core/Src/main.c | 48 ++++- john103C6T6NewVer/Core/Src/rtc.c | 127 ------------ john103C6T6NewVer/Core/Src/stm32f1xx_it.c | 38 ++-- john103C6T6NewVer/Core/Src/usart.c | 102 +++++++++- .../Src/stm32f1xx_hal_uart.c | 3 - john103C6T6NewVer/MDK-ARM/john103C6T6.uvoptx | 184 +++++++++--------- john103C6T6NewVer/MDK-ARM/john103C6T6.uvprojx | 170 +--------------- .../MDK-ARM/startup_stm32f103xb.s | 4 +- john103C6T6NewVer/Modbus/modbus_config.h | 11 +- john103C6T6NewVer/john103C6T6.ioc | 93 ++++----- schem.pdsprj | Bin 10786 -> 16037 bytes schem.pdsprj.DESKTOP-RQ2QP65.z.workspace | 12 +- 22 files changed, 359 insertions(+), 583 deletions(-) create mode 100644 Project Backups/schem [20260325, 15-33-14].pdsprj delete mode 100644 john103C6T6NewVer/Core/Inc/rtc.h delete mode 100644 john103C6T6NewVer/Core/Src/rtc.c diff --git a/Project Backups/schem [20260325, 15-33-14].pdsprj b/Project Backups/schem [20260325, 15-33-14].pdsprj new file mode 100644 index 0000000000000000000000000000000000000000..8f72c3adf34f0f8d8071f2ee2935a0f95b532c27 GIT binary patch literal 10786 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 Y{$utPWe^bmbRs|xa%db*X#ceSA997>h5!Hn literal 0 HcmV?d00001 diff --git a/Project Backups/schem [Autosaved].pdsprj b/Project Backups/schem [Autosaved].pdsprj index 692609af38d6dc68e954aeeae1444898fb80b824..d9f5507f590dc0b987c689d12eb2a5e73a7e6ef2 100644 GIT binary patch delta 15706 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 SMDT8&xW5bp(8Ij{DE>cWbn4>( delta 12125 zcmZ8{1yEegwsiyuE`cDyHMqM52=4Cg?kQwbCh)g&qZWEt_KY8=!jm^6^Z(v_rML9WTdf{(E z;8;GZK1S4FIoEi_S;A>9J#l&*w$R1JccaXW;(Lg}v_Uh*2=^x^!!_D1#7?@Xo@ZCT zor|&F5IxtX{nSjKXtAC;%gxUtKzcB_E0N%S0Sl|&Q=5O<6? z-<(nHqeY+T-x~k!*|PU~YYZ(bP!cAvYGi$AFyBS(ISa$9abZXD;szUOvX6+Jsj^&t zf!N9DQfgUR5Z9Ivp@_k)wY|mGN|{L}(sPN}$Hp!F$#9bDv>~3n*eZCQ)ytxh%Pjj# zB=wrTDBTRUf#Q`p$c9{cVt>ILxB}@)F)i`_ApM~yFZCV@nug>a1|qoa?Ba=T9Cjibqo44KFM{5p8R7gqvqGPT5+wOz%LU26&1 zZAyk@>hpVym3VQjd0l{SwvHu0l=Jmm;9je8?3XnFJ~Lc zzY)TvuFe1u`s2rEL5D|nat^eM$H637h{%(780tg7x8DLs43C$3l=1T~tZS^Iv+-#X zG1&P*cqZQ{=qx04b2H>IB|$9XI|{t~Ev!m$q9aa;b2AOollOxw!xvHM;#d|NLDXX} zIK-pb-kcuZ*yxec97He;kS0qVv@u7Kb=(ljc|Gu zo6()AEjx2|SSra>XcDh;B^p0ljLUae@P^4xxU(nY%&+azdciS$CNrO;SyIVsiaxa9 z+b8W!E@G+LR}|HhnBNym*1%Sc%FtxAF3JRO4dXBD+i7wo^0~-)OiL;=yd%#t7#&*+ zOuWb3SPJna4rgb$v>6LE0+F86)h5#mI~q*D#)@S_^Myz2-=2R zixVY+F+H$km~O^Qi?-AY3oMNbUE7O-an$0WGkbQh*xCGC6sXLuwb!S{DbRRYrV4-p z=JGG;bRiCUP&J?81t`0}+prT=6r@%7gp}?@T6Yfr%&a$x*jWe9U@7+13vh%i+Fp-* z<)>Td!`@D@%9x;nIuc685;`te9>HEH%&0U^72_Pr=PsxVU zUaAnxaeXuw&6g(mWt17PE$0XHUB_)P z2OOWDXTZpq;rf%;&ea!wBF#u+#lphe`3L4~Znns>Fr7xvSFmyP&3AaL-ro(lW7 z=Y!LHG4$_l4E$%!fR8J&O)ZRoZHcEW;nEX|oxnqS;}W5ROZY@%;-07cm%J)&9GIUq1W2%?32gm82kuPQ2P@D**@!9;fq9Y3oW4+sL}LCsdMM|BHp_C($9uV} zC*m!1d}21IStw$r4VDT@)P9Ib@NhJx@o=1#e5NTA%@NaNTH^` z9GI2i7eK<&J3C(1LkqE!DH){#YTRg4f^qbOFYeU#E zEJbs3y(i`rL~z3ep6_pUOIl}Fk~G(@=0`>8I@S&{%vQb@7sXHp857h~XwwyJltOq8 z$6n;iLr7|o*{+lsi1>6(pV(*%=A*Mj@s8hph`MUdGD6HKDs5T>5T!YFtl3})Ai;&8 ztY%V@p^GoTeF=qiuMRbzCBP!O(K?dKX>=kyOzLc%F~8?oeuMDBHc=y z=W*g*fzM&_YoSq5k*%WEt1yj=qWJ18r-y|o9D`|em8yV7HXARr(7NqWbs6dQ6C5i) z$_qo?zydUV%pP-4Jq*Q5`Y1ftEFOsGka=lMP0gs5&Fs?>?U3donY)-!BW!vg{#_&3 z0iw7-7TM)Y+Rrodd00<5EAON*?kRPz7)I**bxpyK7@gB?K=`U$nz(De{2C=sn{Q6> z4rWDaQWKcYEueBDPfwjnZMpbBkNy}nWA2e8)B993mo6IZ!MC51X{KXpHXQe>!i9RM ziI?+C3c|mcS?)5L#MdMvw{g5^34PC#M3fNWL+3oHiC~L>9%$lk>zbP5Z`i#!G&sCW zlkynG;xeASV)zIB7;`}r8+46>-7epSgs3oxF$=Jc(E-$io|&qqKgKZxTiSk*yxC=; zpHC`k@POVaVC5kl)|(CBB$NMSYjM6e{SJ$p&{qay1S^!0kRBEs2v3x8Th7+3E8^NZ z;J5+*jU^FI{kwUv&-J?AvrnOiaB+(aUBg_u%0sv-Sw#Wj+})JkE}=`*pk1D2=YmG2 zwL0+W);`LG-W!UuC+a=Kkra0KOn4{{p|-SRoo^=1T&RS}tiNvSoqQ$zT{H0;k!-PH z^?o7u7AiT@J5D>D588*{?E7`N_6Kldc!Ha=n#}LY=UMLcc6axhhcCAda2@ItCXe56 z%pMjqbKrMsx$jmf?A~1>V37z}?)L`mr7!_bCn#mNomHI{^V)PzZM11(EgUY4HVR%Q zNYnHjV?=JaPF8#YIIaVJ*N*#aY)~9)nDt@Vi$g_++v4QQzr3hZ1xl=bR()0|u#=SO(<>Cdby zc+GkUsH4(kwrj3fZx%!Y!! z8i+flapTwUj2#zE*z|0WuhRp}@oiuRhXX2g8cA&6eOXo0!&#?`NPeKj5p|uAY&#OV zSm${SVQGJR^b`Yq1F42)sc7yxRfQN&OS4yp>nU&!`&f1FCZ!Efi8LGVN=fi~74P<6 z$}eb)aybl@iI)o$k%O)dQnG+CFlKEHzlT6nJNjuu8o%MpS!tvw zn((v(3whzlEEp#Y5;-t{C^I|z5sZ7FK!bxEg&j_Tq*Q|*onRVHqm<@BE;nmY2)<7p zW>K_tJcW{Ru@}l8@-F9?=fL1A{ALuEOW7*II?sY3lW1xx2|89|@C9V(5|$X!v~=;q z_oV7XBYAsOcM7o}?3|$bX&{0*HQl(}PYu~%(Y|81{N|Uf_AP019u#>g=u=g>~Pbynt zX(Za|n2%>Pn}4nLKIcV*BB@={)mDahgMRY_ zWT&MS3&#f$WzHQ;g&Tj+84vE9d>D>0Kl(Brt2y?Wu8Eh6ZZ|xF9D7Ddq>8+QKA3%I zg;UAPyRdYeS{8^p`B`Rq%jSj1rX;RZoltzkUDpQqpb!`5{jOU{U3=!>DJTE_=48Fv zf$;8+RJj9)@I}JqewD44uUyxoeXP-_aw{^LC}eb_u1NHt`*!i(2C`*O-chWBE)#R2 zpLyPL-}L&E;^}hxpyh{sN4PTV)a5FOjbL>36#aJsXghjo4@yKx6B&iB`0}zhN6l4} zIY#*W9Tju;?dxa_rQ2r1nVOuh0TzNtH3NQI^suPnIt6Wh735BH;D=LohiZyiw-7r6 z)RKj`s1^#p_^-uv!Xo6n&eL&i=QbQ}nyp-*7I zcHl?x*&5v#jXp8%z0?_M()9hvc)9izttP!WbT;8ityan;C5rkKZMaBF?0C>^hp@Wn zK1mbfE84As0Z!EO1rJV@>+=pzkOwravD1TDelN49LR-}Tq_lbIG`UVYW|r`Q)*KU@ zr#-aSE%WNe_nhpNVom>)46Fp1TrI8=4E*R@xq-ceS06Iv@@cD%+&Mba-}N`0b`+$! zqvdl*XUtY0sLs*Ah;SrM7lT}{^)fGCTe&eW;oXThRYzvEJ<3|;59nls30CdWvw2K)N=O?Eh*8GUBlH~} z$OXQrU?3pgy1a1%&QA*C?Rl;?=lAVFajIYhILc1w{vPsMwyC_e3jP6!{5SAyHJ`umRXsVg@R`E1 z6LsX$vY|wM2RKJl{ql~9N zMSS^eBX)RcBQ~-Znb1=kYKkRUS15VVnU^5IqKCK||8r-8JWa#2vzbwYYCKb4V(l@` z*z0KOBm!It=E(zUIA44mF$K_tr{jXQCuu+J7fn=mNLqSWRQmf!Q0ynhj+QCOY1Oo875`j?waSMt9(A9aRAq`G ztfXO=f}!Eq%G;`j>r6^1P@~w>+T+U|);~HnksIg|FM$D^)H*%g78{F40^v)}eMmpM z5H-EtcQBj%L?-!@Cd_%1clJYkw`k{&tQNbEliIc6X0{EUb1b)(!mWp?UUMu9`>Br} zSZK-DvA>#kThBUr`BatYY=2|raz@J8I$?E)9Inqcpj|uh>;&&uxks4y;NC{4#dFvq z?A12Loi+lRv27=kgj(bKMqXGA>0;Whb&W8X;@BUs<0!o5dTtzDsw-^Z;O(m`*b;sq zH>%-VS8*?P8sJ$kj0`Ji4>ld^JeH4MJNMDfAvsrcU|g?=cP%&628ujcYT1`PKMtuB zFB_UyY1kNbm^O&&*3nd$k>*OK@oQt_H;*g zHE7XAGcjR=WWfn~>r^cY8b4SS^j)4OxaG&8ri{)a;RMx_bDQsBb8dUYxWjN(F(2pq78MXgY_ zjG_=!XQ8}nt#1J2nXS;zkE&qIr$@vPVCw0gWc1{ODKOF96T zj)jbgAh9vlNaBTZ>PWNu0D zEBQp3Su9K9<5lCuq^07XFI9#3MIX1dY(#EI<_s5_a)vff8P=ZLT>@u-*;KEL630J@ zAxcjj^e?mYSi_SlKbG7e6)tKcq-TIBeIBt{dzY|=!|7@ZH~m247sLcsAqCo>pQ_(h ziXzou6Zs+8-&=$RY5R##h6klVW9Cxc1QqKVs|V&Se(AcFLyVY;F!8U5aGAI$CSDFU zZ`s!cz9&Y=7ijaR5Nm6k9;)N1d>07JQ^)(!!%cxCQo||x7JwD0VN_gPeUAi))GTS) z8NPz4H&@m{v0{LG6Vn^$KEFdaV>=3sPjn3?VL59w>2K@U$hd3XeGa}OV)-WVb30)5 zD1o5gEmMTIxCebB!rcPHVHNYD|90*|>_ro8Bj!#B{`|Kv&Gs#6r)JPm;U)84G-34^ zZNJv_Ef}Ttg6&_OL7ex%AR<{c_NJV^6Dr)DAk#WjnC80(Xb4nf$Q%<{wfm-Acgh`f zQUDkVcsC+aYjTW}5JNE8!m7Uib=ynT1ArZmNkBwoI4R@ylBgEvP?)2EcY*Kw} zz`(>A>I3D46yF_mugPmFT9}uQgt4)z<}=;YCdd+$l3Vt$OC|ww2}NWkwvKyahVJ>H zjs`(=eT^T6Cq#3bFX^_tj~qI$xi=m%?4Bo@Uf;L-EBbV1YQznS+YN@>4UXFl{@bb& z%0rmBUcVaj944y*_tj#qts*t4&p1?qG#k!sAzs=N$k#5T>s{^+RkXJkWJ{65BVey7 z%2OhykO$)!qjPf*fEQWQ$z= zD`SZ$Sm3~sXAt?_g8>U;NTu1YIJ;E}TU`5~74DmsnR9|)UtUknfVKX6iX=6#At4n- z5E{(!2c1t50{Z7)!oksS`e@;XJ%oSj8n;h>Hy!wc`M24;6T^tO%E7vLJ!8-@-;ovz zXHX+t-_rht)7F2#&hpuii5SYdyYnzuJ#x1jraiwrTtp)lMMwdshV(ln=GNz94ZQ~1 zKj-%-<8ZZJM zh%qSA1G*Uv82{-_`2_ah_1``q1l%JT_Ua?|W-~6~LAj73?hys{8atuF!2H`X_B&%r z04h9aTo60q)hAFs#Twb4`Xh`JDq%!W&*@txSZP%yzb99wKp}l(q0j~g1IDlNVy}=w zl+x@U&SOv)kuWHL^nje`e|vAUWC`itei!^3=QjD{J1113*PANXLvideLD-<-J)%=w zidX*pWAFj@yAl6J62ylK;0ncc?A32_!G8n8i{1XjQ^nXMOexe%+z1s+-*@Up%=n?_ zEm|tVIw*K76AG0k3=IZ$euR)>M=a4Mjb9$`d1j10a?Me+XC z#-r}i^$>yomw8w;9c_OncTxPYyma<`Hx|&<4o-!|STJKZe*vm{Cx8Rv*M<5!HA%QQ zQiiaishz!)(1Y7}Dhy ztJP0@);0`Zou_Wz&1pWk+9A1!&3^W7C$(=`9Anj`kFL6OWJ)5au>))spfZ_U%@CovBKZp8TvMfz zxm@{Q80OcMQ`YeH+!*HU(3(WhGB)d9)722TSU@Zl$oem#0~y}!k37r~N`FE1kk%99M&29qjpauU*ZRN5b|3X%b`yi#IH|k9h6msl6;WB6Uo|5gG1E!?O9S%`JS4SJ@<%@Qoe^2LXbNc zp~{-uF~rATj_*1_Wu5A*L30Q2opl(3U7URP zba7E@rFTJfc8$b|5_KjFE+$xa`2AyheRmkmyi$MDUjEsp8u1W=nG&3 zq5KQX0{IV-zZt&5q(IKHUVh!l+{h#gcDCYV#x~L!<2ZqA^)&W2hSzvjTt6bg`Fk6n z42Pa^N8AyqEebmXH&F<@=QThfM`eg2;U7Y~k(Wav-1*>Df^|Mey-mlVuIH_XWXIL> zu>FXpCr-T1{RZg8>LNThf>~L$B1GNNI8l~XnZDY56wUlL9FQ`#RzH%MZ} z%&kqqp+VJ(>12H-PZQ)4K z^_E9z#3PM9t2%35vdOVY@^){%iNww1d~7uVLpxaGOPLw;81cJe&D0(R)TAsH=Cm;K zU)Bz}%2`Qc+tLnYiW#oo46CoH2gsJS)fESdE{i}FhUc523sVZ5$ zY)mOuGm8h%<*o@#r?9V$4w-a~m(=)7uO=(GG_#t=%Edv4#6ZWq_j6lA+0=Fq(I^t3 z$ymS?f!Desc;2S=-C@D>HlA%WC4>0hPa%uWk5TtAqov7?8<}fM-mPpX=ZPMbOU#CR za*kJJ%^AO=h8sGKZ_T|rYUb^>*Wfhx*>3!*>aK&uC=~8`J)yjgRW^w02wAC>t6X$L11-gbc%f zK)T5?$0&V8r3H0`MdykHu5AX{Oua2;JQ7!3OhLlB}FAlHKvmIf5EjjgEgz6N1rq!PFsPs8Oad1C?s+Xu;>#E2?pO z96!XGbmiC4O_s(t5&B#(tohywX)Qn8{YG7cX>Y4PfgPps-JXKg^$(kWa#(NR;eNfW ze6*Qu&HBNi4UO6>lb1EoV-SSsHO5Bwn0f}NIUJvN>1uCcsF&^x2})di)OGPm6ZHlpnM9wA*n!0<;d{tC)}L$?ZlrlffpEX-~V-_AQ1^EktLG$4&DWOb3@+E^IIaUw#~P(9e73 z8@vgiDz*M7cT&|tY;PijvmnOYg26HbZ$X+aLES=hWc{UKqBeM+b+L^Hwyoa5X=qme z973?is_y#+RsiWH=4h_!JN%?ywYnEQ%BK@m%2 zj@2-rJIAr40hNvARh>j+u4xcsaat2CDIEUrWu#NUp5JdiXBgdNw+E@U5*2Cor80|p zGSR##ypRIxfJbdCBelKiH=qA}cwCXcT%JqziM6@J8oyE+vl?@enZ4(J^@@6Jxywd&Vq$U=(!X8*`1{~nq`|?;!43vBp_01a2lCI~(Q6PNmh%r%oV%sim7q9H{oJRej@|3(pRu$qZAsૹOpm1ITv(g&IA!Zb#L`Z-vxvpxe$Un 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.ConfigRegister) + { + case DALLAS_CONFIG_9_BITS: + delayValueMs = DALLAS_DELAY_MS_9_BITS; + break; - case DALLAS_CONFIG_10_BITS: - delayValueMs = DALLAS_DELAY_MS_10_BITS; - break; + case DALLAS_CONFIG_10_BITS: + delayValueMs = DALLAS_DELAY_MS_10_BITS; + break; - case DALLAS_CONFIG_11_BITS: - delayValueMs = DALLAS_DELAY_MS_11_BITS; - break; + case DALLAS_CONFIG_11_BITS: + delayValueMs = DALLAS_DELAY_MS_11_BITS; + break; - case DALLAS_CONFIG_12_BITS: - delayValueMs = DALLAS_DELAY_MS_12_BITS; - break; + case DALLAS_CONFIG_12_BITS: + delayValueMs = DALLAS_DELAY_MS_12_BITS; + break; - default: - break; - } + default: + break; + } + } + else + { + delayValueMs = dallas_delay_ms; + } HAL_Delay(delayValueMs); } diff --git a/john103C6T6NewVer/Core/Src/gpio.c b/john103C6T6NewVer/Core/Src/gpio.c index 597e8c4..23399cd 100644 --- a/john103C6T6NewVer/Core/Src/gpio.c +++ b/john103C6T6NewVer/Core/Src/gpio.c @@ -54,8 +54,8 @@ void MX_GPIO_Init(void) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4 - |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|One_wire_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 + |One_wire_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10 @@ -74,10 +74,10 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Configure GPIO pins : PA1 PA2 PA3 PA4 - PA5 PA6 PA7 One_wire_Pin */ - GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4 - |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|One_wire_Pin; + /*Configure GPIO pins : PA1 PA5 PA6 PA7 + One_wire_Pin */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 + |One_wire_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; diff --git a/john103C6T6NewVer/Core/Src/main.c b/john103C6T6NewVer/Core/Src/main.c index 30fd375..720975c 100644 --- a/john103C6T6NewVer/Core/Src/main.c +++ b/john103C6T6NewVer/Core/Src/main.c @@ -20,7 +20,6 @@ #include "main.h" #include "adc.h" #include "i2c.h" -#include "rtc.h" #include "tim.h" #include "usart.h" #include "gpio.h" @@ -133,9 +132,44 @@ int main(void) MX_TIM2_Init(); MX_ADC1_Init(); MX_I2C1_Init(); - - // MX_RTC_Init(); + MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ +// #ifdef USART1_PA6_PA7 +// HAL_UART_DeInit(&huart1); +// GPIO_InitTypeDef GPIO_InitStruct = {0}; +// +// /* USER CODE BEGIN USART1_MspInit 0 */ + +// /* USER CODE END USART1_MspInit 0 */ +// /* USART1 clock enable */ +// __HAL_RCC_USART1_CLK_ENABLE(); + +// __HAL_RCC_GPIOB_CLK_ENABLE(); +// /**USART1 GPIO Configuration +// PA9 ------> USART1_TX +// PA10 ------> USART1_RX +// */ +// GPIO_InitStruct.Pin = GPIO_PIN_6; +// GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; +// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; +// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + +// GPIO_InitStruct.Pin = GPIO_PIN_7; +// GPIO_InitStruct.Mode = GPIO_MODE_INPUT; +// GPIO_InitStruct.Pull = GPIO_NOPULL; +// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + +// /* USART1 interrupt Init */ +// HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); +// HAL_NVIC_EnableIRQ(USART1_IRQn); +// +// +// +// if (HAL_UART_Init(&huart1) != HAL_OK) +// { +// Error_Handler(); +// } +// #endif LED_BlinkRx_Config_t led_rx = { .port = GPIOC, @@ -221,7 +255,7 @@ int main(void) static uint16_t dataLE[2]; uint32_t start_dwt = get_cycle_count(); uint32_t start = HAL_GetTick(); - Dallas_StartConvertTAll(&hdallas, DALLAS_WAIT_NONE, 0); + Dallas_StartConvertTAll(&hdallas, DALLAS_WAIT_DELAY, 200); uint32_t end_dwt = get_cycle_count(); uint32_t end = HAL_GetTick(); uint32_t time_DWT=end_dwt-start_dwt; @@ -281,11 +315,10 @@ void SystemClock_Config(void) /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; @@ -307,8 +340,7 @@ void SystemClock_Config(void) { Error_Handler(); } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_ADC; - PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI; + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { diff --git a/john103C6T6NewVer/Core/Src/rtc.c b/john103C6T6NewVer/Core/Src/rtc.c deleted file mode 100644 index 1db9f29..0000000 --- a/john103C6T6NewVer/Core/Src/rtc.c +++ /dev/null @@ -1,127 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file rtc.c - * @brief This file provides code for the configuration - * of the RTC instances. - ****************************************************************************** - * @attention - * - * Copyright (c) 2025 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ -/* Includes ------------------------------------------------------------------*/ -#include "rtc.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -RTC_HandleTypeDef hrtc; - -/* RTC init function */ -void MX_RTC_Init(void) -{ - - /* USER CODE BEGIN RTC_Init 0 */ - - /* USER CODE END RTC_Init 0 */ - - RTC_TimeTypeDef sTime = {0}; - RTC_DateTypeDef DateToUpdate = {0}; - - /* USER CODE BEGIN RTC_Init 1 */ - - /* USER CODE END RTC_Init 1 */ - - /** Initialize RTC Only - */ - hrtc.Instance = RTC; - hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND; - hrtc.Init.OutPut = RTC_OUTPUTSOURCE_SECOND; - if (HAL_RTC_Init(&hrtc) != HAL_OK) - { - Error_Handler(); - } - - /* USER CODE BEGIN Check_RTC_BKUP */ - - /* USER CODE END Check_RTC_BKUP */ - - /** Initialize RTC and set the Time and Date - */ - sTime.Hours = 0x0; - sTime.Minutes = 0x0; - sTime.Seconds = 0x0; - - if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK) - { - Error_Handler(); - } - DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY; - DateToUpdate.Month = RTC_MONTH_JANUARY; - DateToUpdate.Date = 0x1; - DateToUpdate.Year = 0x0; - - if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN RTC_Init 2 */ - - /* USER CODE END RTC_Init 2 */ - -} - -void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle) -{ - - if(rtcHandle->Instance==RTC) - { - /* USER CODE BEGIN RTC_MspInit 0 */ - - /* USER CODE END RTC_MspInit 0 */ - HAL_PWR_EnableBkUpAccess(); - /* Enable BKP CLK enable for backup registers */ - __HAL_RCC_BKP_CLK_ENABLE(); - /* RTC clock enable */ - __HAL_RCC_RTC_ENABLE(); - - /* RTC interrupt Init */ - HAL_NVIC_SetPriority(RTC_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(RTC_IRQn); - /* USER CODE BEGIN RTC_MspInit 1 */ - - /* USER CODE END RTC_MspInit 1 */ - } -} - -void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle) -{ - - if(rtcHandle->Instance==RTC) - { - /* USER CODE BEGIN RTC_MspDeInit 0 */ - - /* USER CODE END RTC_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_RTC_DISABLE(); - - /* RTC interrupt Deinit */ - HAL_NVIC_DisableIRQ(RTC_IRQn); - /* USER CODE BEGIN RTC_MspDeInit 1 */ - - /* USER CODE END RTC_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/john103C6T6NewVer/Core/Src/stm32f1xx_it.c b/john103C6T6NewVer/Core/Src/stm32f1xx_it.c index 44966ce..8122531 100644 --- a/john103C6T6NewVer/Core/Src/stm32f1xx_it.c +++ b/john103C6T6NewVer/Core/Src/stm32f1xx_it.c @@ -62,10 +62,10 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ -extern RTC_HandleTypeDef hrtc; extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim2; extern UART_HandleTypeDef huart1; +extern UART_HandleTypeDef huart2; extern TIM_HandleTypeDef htim3; /* USER CODE BEGIN EV */ @@ -210,20 +210,6 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ -/** - * @brief This function handles RTC global interrupt. - */ -void RTC_IRQHandler(void) -{ - /* USER CODE BEGIN RTC_IRQn 0 */ - - /* USER CODE END RTC_IRQn 0 */ - HAL_RTCEx_RTCIRQHandler(&hrtc); - /* USER CODE BEGIN RTC_IRQn 1 */ - - /* USER CODE END RTC_IRQn 1 */ -} - /** * @brief This function handles TIM1 break interrupt. */ @@ -320,7 +306,9 @@ static uint8_t first_in=1; void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ - RS_UART_Handler(&hmodbus1); + #if (USE_USART== USART_1) + RS_UART_Handler(&hmodbus1); + #endif @@ -334,6 +322,24 @@ void USART1_IRQHandler(void) /* USER CODE END USART1_IRQn 1 */ } +/** + * @brief This function handles USART2 global interrupt. + */ +void USART2_IRQHandler(void) +{ + /* USER CODE BEGIN USART2_IRQn 0 */ + #if (USE_USART== USART_2) + RS_UART_Handler(&hmodbus1); + #endif + + + /* USER CODE END USART2_IRQn 0 */ + HAL_UART_IRQHandler(&huart2); + /* USER CODE BEGIN USART2_IRQn 1 */ + + /* USER CODE END USART2_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/john103C6T6NewVer/Core/Src/usart.c b/john103C6T6NewVer/Core/Src/usart.c index 745c288..53a8def 100644 --- a/john103C6T6NewVer/Core/Src/usart.c +++ b/john103C6T6NewVer/Core/Src/usart.c @@ -25,6 +25,7 @@ /* USER CODE END 0 */ UART_HandleTypeDef huart1; +UART_HandleTypeDef huart2; /* USART1 init function */ @@ -54,6 +55,35 @@ void MX_USART1_UART_Init(void) /* USER CODE END USART1_Init 2 */ +} +/* USART2 init function */ + +void MX_USART2_UART_Init(void) +{ + + /* USER CODE BEGIN USART2_Init 0 */ + + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + huart2.Init.BaudRate = 115200; + huart2.Init.WordLength = UART_WORDLENGTH_8B; + huart2.Init.StopBits = UART_STOPBITS_1; + huart2.Init.Parity = UART_PARITY_NONE; + huart2.Init.Mode = UART_MODE_TX_RX; + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + } void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) @@ -68,20 +98,22 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) /* USART1 clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); /**USART1 GPIO Configuration - PA9 ------> USART1_TX - PA10 ------> USART1_RX + PB6 ------> USART1_TX + PB7 ------> USART1_RX */ - GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + __HAL_AFIO_REMAP_USART1_ENABLE(); /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); @@ -90,6 +122,36 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) /* USER CODE END USART1_MspInit 1 */ } + else if(uartHandle->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspInit 0 */ + + /* USER CODE END USART2_MspInit 0 */ + /* USART2 clock enable */ + __HAL_RCC_USART2_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART2 GPIO Configuration + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USART2 interrupt Init */ + HAL_NVIC_SetPriority(USART2_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(USART2_IRQn); + /* USER CODE BEGIN USART2_MspInit 1 */ + + /* USER CODE END USART2_MspInit 1 */ + } } void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) @@ -104,10 +166,10 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) __HAL_RCC_USART1_CLK_DISABLE(); /**USART1 GPIO Configuration - PA9 ------> USART1_TX - PA10 ------> USART1_RX + PB6 ------> USART1_TX + PB7 ------> USART1_RX */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7); /* USART1 interrupt Deinit */ HAL_NVIC_DisableIRQ(USART1_IRQn); @@ -115,6 +177,26 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) /* USER CODE END USART1_MspDeInit 1 */ } + else if(uartHandle->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspDeInit 0 */ + + /* USER CODE END USART2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART2_CLK_DISABLE(); + + /**USART2 GPIO Configuration + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3); + + /* USART2 interrupt Deinit */ + HAL_NVIC_DisableIRQ(USART2_IRQn); + /* USER CODE BEGIN USART2_MspDeInit 1 */ + + /* USER CODE END USART2_MspDeInit 1 */ + } } /* USER CODE BEGIN 1 */ diff --git a/john103C6T6NewVer/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c b/john103C6T6NewVer/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c index 519a82f..b7cf66c 100644 --- a/john103C6T6NewVer/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c +++ b/john103C6T6NewVer/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c @@ -257,7 +257,6 @@ /* Includes ------------------------------------------------------------------*/ #include "stm32f1xx_hal.h" - /** @addtogroup STM32F1xx_HAL_Driver * @{ */ @@ -2363,8 +2362,6 @@ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) /* UART in mode Receiver -------------------------------------------------*/ if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET)) { - - UART_Receive_IT(huart); return; } diff --git a/john103C6T6NewVer/MDK-ARM/john103C6T6.uvoptx b/john103C6T6NewVer/MDK-ARM/john103C6T6.uvoptx index 9af9e4d..4cde529 100644 --- a/john103C6T6NewVer/MDK-ARM/john103C6T6.uvoptx +++ b/john103C6T6NewVer/MDK-ARM/john103C6T6.uvoptx @@ -152,82 +152,98 @@ 0 0 - 109 + 114 1 -
    0
    +
    134248298
    0 0 0 0 0 - 0 - ..\Core\Inc\main.h + 1 + ../Core/Src/main.c - + \\john103C6T6\../Core/Src/main.c\114
    1 0 - 37 + 105 1 -
    0
    +
    134248288
    0 0 0 0 0 - 0 - ..\EEPROM_Emul\src\flash_ring.c + 1 + ../Core/Src/main.c - + \\john103C6T6\../Core/Src/main.c\105
    2 0 - 139 + 121 1 -
    0
    +
    134248302
    0 0 0 0 0 - 0 + 1 ../Core/Src/main.c - + \\john103C6T6\../Core/Src/main.c\121
    3 0 - 199 + 129 1 -
    0
    +
    134248306
    0 0 0 0 0 - 0 + 1 ../Core/Src/main.c - + \\john103C6T6\../Core/Src/main.c\129
    4 0 - 191 + 130 1 -
    0
    +
    134248310
    0 0 0 0 0 - 0 + 1 ../Core/Src/main.c - + \\john103C6T6\../Core/Src/main.c\130 +
    + + 5 + 0 + 132 + 1 +
    134248318
    + 0 + 0 + 0 + 0 + 0 + 1 + ../Core/Src/main.c + + \\john103C6T6\../Core/Src/main.c\132
    @@ -376,6 +392,16 @@ 1 led_rx,0x0A + + 29 + 1 + GPIO_InitStruct + + + 30 + 1 + MB_DIAG,0x0A + @@ -457,6 +483,10 @@ System Viewer\GPIOC 35905 + + System Viewer\RCC + 35902 + System Viewer\USART1 35903 @@ -613,18 +643,6 @@ 0 0 0 - ../Core/Src/rtc.c - rtc.c - 0 - 0 - - - 2 - 12 - 1 - 0 - 0 - 0 ../Core/Src/tim.c tim.c 0 @@ -632,7 +650,7 @@ 2 - 13 + 12 1 0 0 @@ -644,7 +662,7 @@ 2 - 14 + 13 1 0 0 @@ -656,7 +674,7 @@ 2 - 15 + 14 1 0 0 @@ -668,7 +686,7 @@ 2 - 16 + 15 1 0 0 @@ -688,7 +706,7 @@ 0 3 - 17 + 16 1 0 0 @@ -700,7 +718,7 @@ 3 - 18 + 17 1 0 0 @@ -712,7 +730,7 @@ 3 - 19 + 18 1 0 0 @@ -724,7 +742,7 @@ 3 - 20 + 19 1 0 0 @@ -736,7 +754,7 @@ 3 - 21 + 20 1 0 0 @@ -748,7 +766,7 @@ 3 - 22 + 21 1 0 0 @@ -760,7 +778,7 @@ 3 - 23 + 22 1 0 0 @@ -772,7 +790,7 @@ 3 - 24 + 23 1 0 0 @@ -784,7 +802,7 @@ 3 - 25 + 24 1 0 0 @@ -796,7 +814,7 @@ 3 - 26 + 25 1 0 0 @@ -808,7 +826,7 @@ 3 - 27 + 26 1 0 0 @@ -820,7 +838,7 @@ 3 - 28 + 27 1 0 0 @@ -832,7 +850,7 @@ 3 - 29 + 28 1 0 0 @@ -844,7 +862,7 @@ 3 - 30 + 29 1 0 0 @@ -856,7 +874,7 @@ 3 - 31 + 30 1 0 0 @@ -868,7 +886,7 @@ 3 - 32 + 31 1 0 0 @@ -880,31 +898,7 @@ 3 - 33 - 1 - 0 - 0 - 0 - ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c - stm32f1xx_hal_rtc.c - 0 - 0 - - - 3 - 34 - 1 - 0 - 0 - 0 - ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c - stm32f1xx_hal_rtc_ex.c - 0 - 0 - - - 3 - 35 + 32 1 0 0 @@ -924,7 +918,7 @@ 0 4 - 36 + 33 1 0 0 @@ -938,13 +932,13 @@ modbus - 0 + 1 0 0 0 5 - 37 + 34 1 0 0 @@ -956,7 +950,7 @@ 5 - 38 + 35 1 0 0 @@ -968,7 +962,7 @@ 5 - 39 + 36 1 0 0 @@ -980,7 +974,7 @@ 5 - 40 + 37 1 0 0 @@ -992,7 +986,7 @@ 5 - 41 + 38 1 0 0 @@ -1004,7 +998,7 @@ 5 - 42 + 39 1 0 0 @@ -1016,7 +1010,7 @@ 5 - 43 + 40 1 0 0 @@ -1028,7 +1022,7 @@ 5 - 44 + 41 1 0 0 @@ -1040,7 +1034,7 @@ 5 - 45 + 42 1 0 0 @@ -1052,7 +1046,7 @@ 5 - 46 + 43 1 0 0 @@ -1064,7 +1058,7 @@ 5 - 47 + 44 1 0 0 @@ -1076,7 +1070,7 @@ 5 - 48 + 45 1 0 0 @@ -1088,7 +1082,7 @@ 5 - 49 + 46 1 0 0 @@ -1108,7 +1102,7 @@ 0 6 - 50 + 47 1 0 0 diff --git a/john103C6T6NewVer/MDK-ARM/john103C6T6.uvprojx b/john103C6T6NewVer/MDK-ARM/john103C6T6.uvprojx index d1eadd1..d5b5654 100644 --- a/john103C6T6NewVer/MDK-ARM/john103C6T6.uvprojx +++ b/john103C6T6NewVer/MDK-ARM/john103C6T6.uvprojx @@ -341,7 +341,7 @@ USE_HAL_DRIVER,STM32F103xB - ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Modbus;../EEPROM_Emul/lib;../../core/STM32_Modbus/Inc;..\linkBlink + ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Modbus;../EEPROM_Emul/lib;../../core/STM32_Modbus/Inc;../linkBlink @@ -542,62 +542,6 @@ - - rtc.c - 1 - ../Core/Src/rtc.c - - - 2 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - tim.c 1 @@ -861,118 +805,6 @@ - - stm32f1xx_hal_rtc.c - 1 - ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c - - - 2 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - - - stm32f1xx_hal_rtc_ex.c - 1 - ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c - - - 2 - 0 - 0 - 0 - 0 - 1 - 2 - 2 - 2 - 2 - 11 - - - 1 - - - - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 2 - 0 - 2 - 2 - 2 - 2 - 2 - 0 - 0 - 2 - 2 - 2 - 2 - 2 - - - - - - - - - - stm32f1xx_hal_uart.c 1 diff --git a/john103C6T6NewVer/MDK-ARM/startup_stm32f103xb.s b/john103C6T6NewVer/MDK-ARM/startup_stm32f103xb.s index 7ced626..26a7d15 100644 --- a/john103C6T6NewVer/MDK-ARM/startup_stm32f103xb.s +++ b/john103C6T6NewVer/MDK-ARM/startup_stm32f103xb.s @@ -29,7 +29,7 @@ ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Stack_Size EQU 0x400 +Stack_Size EQU 0x200 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size @@ -40,7 +40,7 @@ __initial_sp ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Heap_Size EQU 0x400 +Heap_Size EQU 0x200 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base diff --git a/john103C6T6NewVer/Modbus/modbus_config.h b/john103C6T6NewVer/Modbus/modbus_config.h index 74850b2..9d5682b 100644 --- a/john103C6T6NewVer/Modbus/modbus_config.h +++ b/john103C6T6NewVer/Modbus/modbus_config.h @@ -16,10 +16,15 @@ - Настройки периферии (UART, TIMER) - Подключение модулей Modbus - Опциональные функции (переключение команд 0x03/0x04) -******************************************************************************/ +******************************************************SSSSSS************************/ #ifndef _MODBUS_CONFIG_H_ #define _MODBUS_CONFIG_H_ #include "stm32f1xx_hal.h" +#include "main.h" +//#define USART_1 1 + + + // Общие параметры #define MODBUS_DEVICE_ID 3 ///< Адрес устройства в сети Modbus @@ -38,7 +43,11 @@ #define MODBUS_USEROBJECT_0_NAME "" ///< Строка пользовательского идентификатора 0. По аналогии можно определить строки до <=128 USEROBJECT // Периферия (опционально) +#if (USE_USART== USART_1) #define mb_huart huart1 ///< Удобный дефайн для модбасовского uart +#elif(USE_USART==USART_2) +#define mb_huart huart2 +#endif #define mb_htim htim2 ///< Удобный дефайн для модбасовского таймера //#define RS_EnableReceive() ///< Функция изменения направления передачи на ПРИЕМ для RS-485 //#define RS_EnableTransmit() ///< Функция изменения направления передачи на ПЕРЕДАЧУ для RS-485 diff --git a/john103C6T6NewVer/john103C6T6.ioc b/john103C6T6NewVer/john103C6T6.ioc index 436a169..94d667b 100644 --- a/john103C6T6NewVer/john103C6T6.ioc +++ b/john103C6T6NewVer/john103C6T6.ioc @@ -18,45 +18,42 @@ Mcu.IP0=ADC1 Mcu.IP1=I2C1 Mcu.IP2=NVIC Mcu.IP3=RCC -Mcu.IP4=RTC -Mcu.IP5=SYS -Mcu.IP6=TIM1 -Mcu.IP7=TIM2 -Mcu.IP8=USART1 +Mcu.IP4=SYS +Mcu.IP5=TIM1 +Mcu.IP6=TIM2 +Mcu.IP7=USART1 +Mcu.IP8=USART2 Mcu.IPNb=9 Mcu.Name=STM32F103C(4-6)Tx Mcu.Package=LQFP48 Mcu.Pin0=PC13-TAMPER-RTC Mcu.Pin1=PD0-OSC_IN -Mcu.Pin10=PA7 -Mcu.Pin11=PB0 -Mcu.Pin12=PB1 -Mcu.Pin13=PB2 -Mcu.Pin14=PB10 -Mcu.Pin15=PB11 -Mcu.Pin16=PA9 -Mcu.Pin17=PA10 -Mcu.Pin18=PA13 -Mcu.Pin19=PA14 +Mcu.Pin10=PB0 +Mcu.Pin11=PB1 +Mcu.Pin12=PB2 +Mcu.Pin13=PB10 +Mcu.Pin14=PB11 +Mcu.Pin15=PA13 +Mcu.Pin16=PA14 +Mcu.Pin17=PA15 +Mcu.Pin18=PB6 +Mcu.Pin19=PB7 Mcu.Pin2=PD1-OSC_OUT -Mcu.Pin20=PA15 -Mcu.Pin21=PB8 -Mcu.Pin22=PB9 -Mcu.Pin23=VP_ADC1_TempSens_Input -Mcu.Pin24=VP_ADC1_Vref_Input -Mcu.Pin25=VP_RTC_VS_RTC_Activate -Mcu.Pin26=VP_RTC_VS_RTC_Calendar -Mcu.Pin27=VP_SYS_VS_tim3 -Mcu.Pin28=VP_TIM1_VS_ClockSourceINT -Mcu.Pin29=VP_TIM2_VS_ClockSourceINT +Mcu.Pin20=PB8 +Mcu.Pin21=PB9 +Mcu.Pin22=VP_ADC1_TempSens_Input +Mcu.Pin23=VP_ADC1_Vref_Input +Mcu.Pin24=VP_SYS_VS_tim3 +Mcu.Pin25=VP_TIM1_VS_ClockSourceINT +Mcu.Pin26=VP_TIM2_VS_ClockSourceINT Mcu.Pin3=PA0-WKUP Mcu.Pin4=PA1 Mcu.Pin5=PA2 Mcu.Pin6=PA3 -Mcu.Pin7=PA4 -Mcu.Pin8=PA5 -Mcu.Pin9=PA6 -Mcu.PinsNb=30 +Mcu.Pin7=PA5 +Mcu.Pin8=PA6 +Mcu.Pin9=PA7 +Mcu.PinsNb=27 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -70,7 +67,6 @@ NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.RTC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false NVIC.TIM1_BRK_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true @@ -82,14 +78,12 @@ NVIC.TIM3_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:true NVIC.TimeBase=TIM3_IRQn NVIC.TimeBaseIP=TIM3 NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.USART2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false PA0-WKUP.Locked=true PA0-WKUP.Signal=GPIO_Input PA1.Locked=true PA1.Signal=GPIO_Output -PA10.Locked=true -PA10.Mode=Asynchronous -PA10.Signal=USART1_RX PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial_Wire @@ -98,21 +92,16 @@ PA15.GPIOParameters=GPIO_Label PA15.GPIO_Label=One_wire PA15.Locked=true PA15.Signal=GPIO_Output -PA2.Locked=true -PA2.Signal=GPIO_Output -PA3.Locked=true -PA3.Signal=GPIO_Output -PA4.Locked=true -PA4.Signal=GPIO_Output +PA2.Mode=Asynchronous +PA2.Signal=USART2_TX +PA3.Mode=Asynchronous +PA3.Signal=USART2_RX PA5.Locked=true PA5.Signal=GPIO_Output PA6.Locked=true PA6.Signal=GPIO_Output PA7.Locked=true PA7.Signal=GPIO_Output -PA9.Locked=true -PA9.Mode=Asynchronous -PA9.Signal=USART1_TX PB0.Locked=true PB0.Signal=GPIO_Output PB1.Locked=true @@ -123,6 +112,12 @@ PB11.Locked=true PB11.Signal=GPIO_Output PB2.Locked=true PB2.Signal=GPIO_Output +PB6.Locked=true +PB6.Mode=Asynchronous +PB6.Signal=USART1_TX +PB7.Locked=true +PB7.Mode=Asynchronous +PB7.Signal=USART1_RX PB8.Mode=I2C PB8.Signal=I2C1_SCL PB9.Mode=I2C @@ -149,7 +144,7 @@ ProjectManager.DeviceId=STM32F103C8Tx ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6 ProjectManager.FreePins=false ProjectManager.HalAssertFull=false -ProjectManager.HeapSize=0x200 +ProjectManager.HeapSize=0x400 ProjectManager.KeepUserCode=true ProjectManager.LastFirmware=false ProjectManager.LibraryCopy=0 @@ -161,13 +156,13 @@ ProjectManager.ProjectFileName=john103C6T6.ioc ProjectManager.ProjectName=john103C6T6 ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= -ProjectManager.StackSize=0x200 +ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=MDK-ARM V5.32 ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_TIM1_Init-TIM1-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_I2C1_Init-I2C1-false-HAL-true,8-MX_RTC_Init-RTC-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_TIM1_Init-TIM1-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_I2C1_Init-I2C1-false-HAL-true,8-MX_USART2_UART_Init-USART2-false-HAL-true RCC.ADCFreqValue=12000000 RCC.ADCPresc=RCC_ADCPCLK2_DIV6 RCC.AHBFreq_Value=72000000 @@ -191,8 +186,6 @@ RCC.TimSysFreq_Value=72000000 RCC.USBFreq_Value=48000000 RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5 RCC.VCOOutput2Freq_Value=8000000 -RTC.IPParameters=OutPut -RTC.OutPut=RTC_OUTPUTSOURCE_SECOND TIM1.IPParameters=Prescaler,Period TIM1.Period=65535 TIM1.Prescaler=0 @@ -201,14 +194,12 @@ TIM2.Period=65535 TIM2.Prescaler=7199 USART1.IPParameters=VirtualMode USART1.VirtualMode=VM_ASYNC +USART2.IPParameters=VirtualMode +USART2.VirtualMode=VM_ASYNC VP_ADC1_TempSens_Input.Mode=IN-TempSens VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input VP_ADC1_Vref_Input.Mode=IN-Vrefint VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input -VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled -VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate -VP_RTC_VS_RTC_Calendar.Mode=RTC_Calendar -VP_RTC_VS_RTC_Calendar.Signal=RTC_VS_RTC_Calendar VP_SYS_VS_tim3.Mode=TIM3 VP_SYS_VS_tim3.Signal=SYS_VS_tim3 VP_TIM1_VS_ClockSourceINT.Mode=Internal diff --git a/schem.pdsprj b/schem.pdsprj index 8f72c3adf34f0f8d8071f2ee2935a0f95b532c27..1325b4cf3da435db645786ad9dc99818efe6228c 100644 GIT binary patch literal 16037 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 literal 10786 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 Y{$utPWe^bmbRs|xa%db*X#ceSA997>h5!Hn diff --git a/schem.pdsprj.DESKTOP-RQ2QP65.z.workspace b/schem.pdsprj.DESKTOP-RQ2QP65.z.workspace index 008131e..7e0cbb7 100644 --- a/schem.pdsprj.DESKTOP-RQ2QP65.z.workspace +++ b/schem.pdsprj.DESKTOP-RQ2QP65.z.workspace @@ -3,9 +3,9 @@ 2c0000000200000003000000ffffffffffffffffffffffffffffffff40000000670000008c080000bd050000 - + - + @@ -18,9 +18,9 @@ - + - + @@ -31,6 +31,7 @@ -22 No 100 + 120 100 @@ -53,6 +54,9 @@ 0 + + +