{"id":6349,"date":"2022-12-30T03:09:24","date_gmt":"2022-12-30T01:09:24","guid":{"rendered":"https:\/\/flprog.ru\/?p=6349"},"modified":"2022-12-30T03:09:24","modified_gmt":"2022-12-30T01:09:24","slug":"dobavlenie-novogo-kontrollera-stm32f103c8-blue-pill-v-programmu-flprog","status":"publish","type":"post","link":"https:\/\/flprog.ru\/en\/uchebnyj-centr\/articles\/dobavlenie-novogo-kontrollera-stm32f103c8-blue-pill-v-programmu-flprog\/","title":{"rendered":"Adding a new controller (STM32F103C8 \u201cBlue Pill\u201d) to the FLProg program."},"content":{"rendered":"<p style=\"text-align: center;\"><span style=\"color: #ff0000; font-size: 24px;\">Attention!<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #ff0000; font-size: 24px;\">STM32 support has appeared in the FLProg program since version 8.0.1.<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #ff0000; font-size: 24px;\">Arduino and ESP controllers, in accordance with this instruction, can be added in earlier versions.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>Open the FLProg program. In the main menu, select the &#8220;Tools&#8221; item, and in it &#8220;Editor of custom controller descriptions&#8221;.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6350\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04411.png\" alt=\"\" width=\"934\" height=\"699\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04411.png 934w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04411-300x225.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04411-150x112.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04411-768x575.png 768w\" sizes=\"auto, (max-width: 934px) 100vw, 934px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The editor window opens. In it we add a new description of the controller.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6351\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04412.png\" alt=\"\" width=\"1027\" height=\"632\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04412.png 1027w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04412-300x185.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04412-1024x630.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04412-150x92.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04412-768x473.png 768w\" sizes=\"auto, (max-width: 1027px) 100vw, 1027px\" \/><\/p>\n<p>Enter the name of the controller.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6352\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04413.png\" alt=\"\" width=\"451\" height=\"192\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04413.png 451w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04413-300x128.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04413-150x64.png 150w\" sizes=\"auto, (max-width: 451px) 100vw, 451px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>After adding a description, go to the &#8220;General Settings&#8221; branch and select the type of CPU used.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6353\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04414.png\" alt=\"\" width=\"1026\" height=\"633\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04414.png 1026w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04414-300x185.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04414-1024x632.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04414-150x93.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04414-768x474.png 768w\" sizes=\"auto, (max-width: 1026px) 100vw, 1026px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Then go to the &#8220;Images&#8221; branch and upload the necessary images to the description.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6354\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04415.png\" alt=\"\" width=\"1029\" height=\"631\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04415.png 1029w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04415-300x184.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04415-1024x628.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04415-150x92.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04415-768x471.png 768w\" sizes=\"auto, (max-width: 1029px) 100vw, 1029px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6356\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04416.png\" alt=\"\" width=\"1028\" height=\"631\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04416.png 1028w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04416-300x184.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04416-1024x629.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04416-150x92.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04416-768x471.png 768w\" sizes=\"auto, (max-width: 1028px) 100vw, 1028px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>In accordance with the pinout of the controller, we set the number of pins of the board.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6357\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04417.png\" alt=\"\" width=\"1028\" height=\"634\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04417.png 1028w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04417-300x185.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04417-1024x632.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04417-150x93.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04417-768x474.png 768w\" sizes=\"auto, (max-width: 1028px) 100vw, 1028px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>For each pin, we set the main name (usually the name that is printed on the board is used) and, if desired, an additional one (alias). After the task, we add the functions of this output.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6358\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04418.png\" alt=\"\" width=\"1029\" height=\"634\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04418.png 1029w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04418-300x185.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04418-1024x631.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04418-150x92.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04418-768x473.png 768w\" sizes=\"auto, (max-width: 1029px) 100vw, 1029px\" \/><\/p>\n<p>We add the function of digital input &#8211; output.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6359\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04419.png\" alt=\"\" width=\"408\" height=\"340\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04419.png 408w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04419-300x250.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u04419-150x125.png 150w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>And set the parameters of this function. According to the documentation for the board.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6360\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044110.png\" alt=\"\" width=\"1027\" height=\"634\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044110.png 1027w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044110-300x185.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044110-1024x632.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044110-150x93.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044110-768x474.png 768w\" sizes=\"auto, (max-width: 1027px) 100vw, 1027px\" \/><\/p>\n<p>Please note that in the Arduino and ESP controllers, when programming in the ArduinoIDE, digital pin designations are used. Accordingly, in the editor of user descriptions, digital identifiers are also used. For STM, the examples and description use textual descriptions like &#8220;PC13&#8221;. In fact, these are numeric constants declared in the kernel, calculated depending on the CPU used. To determine the digital values of these constants, the following sketch was loaded into the board.<\/p>\n<details>\n<summary><strong>Sketch Code<\/strong><\/summary>\n<p><em>void setup() {<\/em><\/p>\n<p><em>\u00a0 \/\/ put your setup code here, to run once:<\/em><\/p>\n<p><em>\u00a0 Serial1.begin(9600);<\/em><\/p>\n<p><em>\u00a0 delay(2000);<\/em><\/p>\n<p><em>\u00a0 int temp = PB12;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB12 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB13;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB13 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB14;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB14 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB15;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB15 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA8;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA8 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA9;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA9 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA10;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA10 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA11;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA11 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA12;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA12 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA15;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA15 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB3;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB3 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB4;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB4 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB5;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB5 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB6;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB6 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB7;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB7 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB8;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB8 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB9;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB9 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB10;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB10 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB11;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB11 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB1;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB1 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PB0;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PB0 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA7;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA7 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA6;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA6 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA5;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA5 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA4;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA4 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA3;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA3 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA2;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA2 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA1;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA1 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PA0;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PA0 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PC15;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PC15 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PC14;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PC14 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = PC13;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;PC13 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A9;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A9 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A8;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A8 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A7;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A7 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A6;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A6 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A5;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A5 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A4;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A5 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A3;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A3 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A2;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A2 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A1;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A1 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>\u00a0 temp = A0;<\/em><\/p>\n<p><em>\u00a0 Serial1.print(&#8220;A0 &#8211; &#8220;);<\/em><\/p>\n<p><em>\u00a0 Serial1.println(temp);<\/em><\/p>\n<p><em>}<\/em><\/p>\n<p><em>void loop() {<\/em><\/p>\n<p><em>\u00a0 \/\/ put your main code here, to run repeatedly:<\/em><\/p>\n<p><em>}<\/em><\/p>\n<\/details>\n<p>&nbsp;<\/p>\n<details>\n<summary><strong>As a result, I got the following values:<\/strong><\/summary>\n<p>&nbsp;<\/p>\n<p><em>PB12 &#8211; 16<\/em><\/p>\n<p><em>PB13 &#8211; 15<\/em><\/p>\n<p><em>PB14 &#8211; 14<\/em><\/p>\n<p><em>PB15 &#8211; 13<\/em><\/p>\n<p><em>PA8 &#8211; 12<\/em><\/p>\n<p><em>PA9 &#8211; 11<\/em><\/p>\n<p><em>PA10 &#8211; 10<\/em><\/p>\n<p><em>PA11 &#8211; 9<\/em><\/p>\n<p><em>PA12 &#8211; 8<\/em><\/p>\n<p><em>PA15 &#8211; 7<\/em><\/p>\n<p><em>PB3 &#8211; 6<\/em><\/p>\n<p><em>PB4 &#8211; 5<\/em><\/p>\n<p><em>PB5 &#8211; 4<\/em><\/p>\n<p><em>PB6 &#8211; 3<\/em><\/p>\n<p><em>PB7 &#8211; 2<\/em><\/p>\n<p><em>PB8 &#8211; 1<\/em><\/p>\n<p><em>PB9 &#8211; 0<\/em><\/p>\n<p><em>PB10 &#8211; 30<\/em><\/p>\n<p><em>PB11 &#8211; 31<\/em><\/p>\n<p><em>PB1 &#8211; 201<\/em><\/p>\n<p><em>PB0 &#8211; 200<\/em><\/p>\n<p><em>PA7 &#8211; 199<\/em><\/p>\n<p><em>PA6 &#8211; 198<\/em><\/p>\n<p><em>PA5 &#8211; 197<\/em><\/p>\n<p><em>PA4 &#8211; 196<\/em><\/p>\n<p><em>PA3 &#8211; 195<\/em><\/p>\n<p><em>PA2 &#8211; 194<\/em><\/p>\n<p><em>PA1 &#8211; 193<\/em><\/p>\n<p><em>PA0 &#8211; 192<\/em><\/p>\n<p><em>PC15 &#8211; 19<\/em><\/p>\n<p><em>PC14 &#8211; 18<\/em><\/p>\n<p><em>PC13 &#8211; 17<\/em><\/p>\n<p><em>A9 &#8211; 201<\/em><\/p>\n<p><em>A8 &#8211; 200<\/em><\/p>\n<p><em>A7 &#8211; 199<\/em><\/p>\n<p><em>A6 &#8211; 198<\/em><\/p>\n<p><em>A5 &#8211; 197<\/em><\/p>\n<p><em>A5 &#8211; 196<\/em><\/p>\n<p><em>A<\/em><em>3 &#8211; 195<\/em><\/p>\n<p><em>A<\/em><em>2 &#8211; 194<\/em><\/p>\n<p><em>A<\/em><em>1 &#8211; 193<\/em><\/p>\n<p><em>A0 \u2013 192<\/em><\/p>\n<\/details>\n<p>In accordance with these values, we set the parameters of the remaining pins. Some of the pins may be PWM outputs.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6364\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044111.png\" alt=\"\" width=\"150\" height=\"140\" \/><\/p>\n<p>For these pins, do not forget to check the corresponding box.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6365\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044112.png\" alt=\"\" width=\"753\" height=\"481\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044112.png 753w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044112-300x192.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044112-150x96.png 150w\" sizes=\"auto, (max-width: 753px) 100vw, 753px\" \/><\/p>\n<p>Some pins can be used as analog inputs.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6366\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044113.png\" alt=\"\" width=\"236\" height=\"78\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044113.png 236w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044113-150x50.png 150w\" sizes=\"auto, (max-width: 236px) 100vw, 236px\" \/><\/p>\n<p>For them, we add one more function &#8211; &#8220;Analog input&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6367\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044114.png\" alt=\"\" width=\"921\" height=\"457\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044114.png 921w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044114-300x149.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044114-150x74.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044114-768x381.png 768w\" sizes=\"auto, (max-width: 921px) 100vw, 921px\" \/><\/p>\n<p>And in the properties of this function we set the necessary parameters obtained using the sketch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6368\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044115.png\" alt=\"\" width=\"1002\" height=\"499\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044115.png 1002w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044115-300x149.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044115-150x75.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044115-768x382.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p>After filling in the parameters of all pins, a situation is possible when the previously specified number is either not enough, or there are extra ones. This number can always be corrected on the &#8220;Controller outputs&#8221; branch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6369\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044116.png\" alt=\"\" width=\"932\" height=\"806\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044116.png 932w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044116-300x259.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044116-150x130.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044116-768x664.png 768w\" sizes=\"auto, (max-width: 932px) 100vw, 932px\" \/><\/p>\n<p>If the entered value is greater than the old one, then the required number of pins will be added to the end of the list, if it is less, then an additional request for deletion confirmation will be displayed first, and then the extra pins from the bottom of the list will be deleted.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6370\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044117.png\" alt=\"\" width=\"694\" height=\"369\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044117.png 694w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044117-300x160.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044117-150x80.png 150w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>If desired, you can change the sequence of pins.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6371\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044118.png\" alt=\"\" width=\"1023\" height=\"786\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044118.png 1023w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044118-300x230.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044118-150x115.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044118-768x590.png 768w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Then we add additional features. In accordance with the documentation, UART1 is displayed on pins RA9 and RA10.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6372\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044119.png\" alt=\"\" width=\"312\" height=\"60\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044119.png 312w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044119-300x58.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044119-150x29.png 150w\" sizes=\"auto, (max-width: 312px) 100vw, 312px\" \/><\/p>\n<p>We add the UART function to the PA9 pin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6373\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044120.png\" alt=\"\" width=\"955\" height=\"725\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044120.png 955w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044120-300x228.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044120-150x114.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044120-768x583.png 768w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/p>\n<p>And fill in the parameters of this function.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6374\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044122.png\" alt=\"\" width=\"567\" height=\"284\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044122.png 567w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044122-300x150.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044122-150x75.png 150w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>At any time, you can see if there are current errors in the description and what they are. If there are errors in the description, the \u201cErrors\u201d branch appears which contains their description.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6375\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044123.png\" alt=\"\" width=\"956\" height=\"199\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044123.png 956w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044123-300x62.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044123-150x31.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044123-768x160.png 768w\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Add UART function for pin PA10.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6376\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044124.png\" alt=\"\" width=\"912\" height=\"470\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044124.png 912w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044124-300x155.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044124-150x77.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044124-768x396.png 768w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>And fill in the parameters.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6377\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044125.png\" alt=\"\" width=\"952\" height=\"277\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044125.png 952w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044125-300x87.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044125-150x44.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044125-768x223.png 768w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Errors in the description disappear.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6378\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044126.png\" alt=\"\" width=\"599\" height=\"180\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044126.png 599w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044126-300x90.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044126-150x45.png 150w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Thus we describe UART2 and UART3.<\/p>\n<p>Let&#8217;s move on to the I2C bus. Currently, the FLProg program supports only one I2C bus. Therefore, we will describe only one. According to the documentation, the I2C bus is connected to pins PB6 and PB7.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6379\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044127.png\" alt=\"\" width=\"361\" height=\"58\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044127.png 361w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044127-300x48.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044127-150x24.png 150w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/p>\n<p>Accordingly, we add the I2C function to the PB6 pin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6380\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044128.png\" alt=\"\" width=\"1018\" height=\"588\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044128.png 1018w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044128-300x173.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044128-150x87.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044128-768x444.png 768w\" sizes=\"auto, (max-width: 1018px) 100vw, 1018px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>And set the necessary parameters (in FLProg, bus numbers start from 0).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6381\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044129.png\" alt=\"\" width=\"994\" height=\"346\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044129.png 994w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044129-300x104.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044129-150x52.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044129-768x267.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p>We do the same with pin PB7.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6382\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044130.png\" alt=\"\" width=\"970\" height=\"480\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044130.png 970w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044130-300x148.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044130-150x74.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044130-768x380.png 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/p>\n<p>and parametrize.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6383\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044131.png\" alt=\"\" width=\"895\" height=\"426\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044131.png 895w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044131-300x143.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044131-150x71.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044131-768x366.png 768w\" sizes=\"auto, (max-width: 895px) 100vw, 895px\" \/><\/p>\n<p>Let&#8217;s move on to the SPI bus.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6384\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044132.png\" alt=\"\" width=\"348\" height=\"192\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044132.png 348w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044132-300x166.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044132-150x83.png 150w\" sizes=\"auto, (max-width: 348px) 100vw, 348px\" \/><\/p>\n<p>Add a function to the desired pin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6385\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044133.png\" alt=\"\" width=\"1004\" height=\"523\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044133.png 1004w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044133-300x156.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044133-150x78.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044133-768x400.png 768w\" sizes=\"auto, (max-width: 1004px) 100vw, 1004px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>And we set up.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6386\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044134.png\" alt=\"\" width=\"804\" height=\"421\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044134.png 804w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044134-300x157.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044134-150x79.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044134-768x402.png 768w\" sizes=\"auto, (max-width: 804px) 100vw, 804px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>We complete the tire setup.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6387\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044135.png\" alt=\"\" width=\"368\" height=\"451\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044135.png 368w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044135-245x300.png 245w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044135-122x150.png 122w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><\/p>\n<p>After setting up the pins, we proceed to setting up the composition of the standard library for this controller. By default, all standard library blocks are disabled for the new controller. I have so far decided that it is worthwhile to allow all building blocks for this controller for the time being.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6388\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044136.png\" alt=\"\" width=\"1032\" height=\"812\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044136.png 1032w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044136-300x236.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044136-1024x806.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044136-150x118.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044136-768x604.png 768w\" sizes=\"auto, (max-width: 1032px) 100vw, 1032px\" \/><\/p>\n<p>Accordingly, select the main branch of the library, click the &#8220;Allow&#8221; button and do not forget to click the &#8220;Apply&#8221; button for all changes. Allowed blocks are displayed in black.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6389\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044137.png\" alt=\"\" width=\"1023\" height=\"812\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044137.png 1023w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044137-300x238.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044137-150x119.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044137-768x610.png 768w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/p>\n<p>Go to the pre-configuration branch of the Arduino IDE. This branch is used to set the parameters necessary for the Arduino IDE to start with the settings for the desired controller.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6392\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044138.png\" alt=\"\" width=\"1025\" height=\"572\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044138.png 1025w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044138-300x167.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044138-150x84.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044138-768x429.png 768w\" sizes=\"auto, (max-width: 1025px) 100vw, 1025px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>After clicking the &#8220;Read&#8221; button, a window for reading the necessary parameters will open.After clicking the &#8220;Read&#8221; button, a window for reading the necessary parameters will open.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6393\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044139.png\" alt=\"\" width=\"445\" height=\"348\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044139.png 445w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044139-300x235.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044139-150x117.png 150w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/p>\n<p>First, we clear the \u201cpreferences.txt\u201d file from garbage, and then open the Arduino IDE. In it, select the required CPU.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6394\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044140.png\" alt=\"\" width=\"1110\" height=\"800\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044140.png 1110w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044140-300x216.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044140-1024x738.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044140-150x108.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044140-768x554.png 768w\" sizes=\"auto, (max-width: 1110px) 100vw, 1110px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Then choose a specific board.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6395\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044141.png\" alt=\"\" width=\"839\" height=\"843\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044141.png 839w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044141-300x300.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044141-150x150.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044141-768x772.png 768w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044141-45x45.png 45w\" sizes=\"auto, (max-width: 839px) 100vw, 839px\" \/><\/p>\n<p>And adjust the rest of the settings.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6397\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044142.png\" alt=\"\" width=\"628\" height=\"589\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044142.png 628w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044142-300x281.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044142-150x141.png 150w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>After that, just close the Arduino IDE, and read the necessary parameters.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6398\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044143.png\" alt=\"\" width=\"444\" height=\"342\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044143.png 444w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044143-300x231.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044143-150x116.png 150w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/p>\n<p>We check the received parameters.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6399\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044144.png\" alt=\"\" width=\"1024\" height=\"572\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044144.png 1024w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044144-300x168.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044144-150x84.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044144-768x429.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Now let&#8217;s go back to the documentation and deal with UART0. According to the documentation, it connects to USB and does not have access to physical pins.<\/p>\n<p>Let&#8217;s add two new outputs to the list of pins.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6400\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044145.png\" alt=\"\" width=\"322\" height=\"187\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044145.png 322w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044145-300x174.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044145-150x87.png 150w\" sizes=\"auto, (max-width: 322px) 100vw, 322px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Let&#8217;s consider them virtual.<\/p>\n<p>Set the name of the first virtual pin.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6401\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044146.png\" alt=\"\" width=\"559\" height=\"269\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044146.png 559w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044146-300x144.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044146-150x72.png 150w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>We add a UART function to it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6402\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044147.png\" alt=\"\" width=\"921\" height=\"555\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044147.png 921w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044147-300x181.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044147-150x90.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044147-768x463.png 768w\" sizes=\"auto, (max-width: 921px) 100vw, 921px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Fill in the parameters of the function.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6403\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044148.png\" alt=\"\" width=\"925\" height=\"507\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044148.png 925w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044148-300x164.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044148-150x82.png 150w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044148-768x421.png 768w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Set up the second virtual pin in the same way.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6404\" src=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044149.png\" alt=\"\" width=\"308\" height=\"135\" srcset=\"https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044149.png 308w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044149-300x131.png 300w, https:\/\/flprog.ru\/wp-content\/uploads\/2022\/12\/\u0420\u0438\u044149-150x66.png 150w\" sizes=\"auto, (max-width: 308px) 100vw, 308px\" \/><\/p>\n<p>Since these pins do not have any I\/O functions, they will not appear for selection as such, but the UART will appear in the program.<\/p>\n<p>On this, the creation of the controller description can be considered complete, and after saving it can be used in the program.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<div class=\"rcl-rating-box rating-type-post box-default\"><div class=\"rating-wrapper\"><span class=\"vote-heart\"><i class=\"rcli fa-heartbeat\" aria-hidden=\"true\"><\/i><\/span><span class=\"rating-value rating-value-view\" title=\"See history\" data-rating=\"b2JqZWN0X2lkOjYzNDksb2JqZWN0X2F1dGhvcjo5MTc3LHJhdGluZ190eXBlOnBvc3QscmF0aW5nX3N0YXR1czp2aWV3\" onclick=\"rcl_view_list_votes(this);\"><span class=\"rating-plus\">1<\/span><\/span><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Attention! STM32 support has appeared in the FLProg program since version 8.0.1. Arduino and ESP controllers, in accordance with this instruction, can be added in earlier versions. &nbsp; Open the FLProg program. In the main menu, select the &#8220;Tools&#8221; item, and in it &#8220;Editor of custom controller descriptions&#8221;. &nbsp; &nbsp; The editor window opens. In &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"Adding a new controller (STM32F103C8 \u201cBlue Pill\u201d) to the FLProg program.\" class=\"read-more button\" href=\"https:\/\/flprog.ru\/en\/uchebnyj-centr\/articles\/dobavlenie-novogo-kontrollera-stm32f103c8-blue-pill-v-programmu-flprog\/#more-6349\">\u0414\u0430\u043b\u0435\u0435&#8230;<span class=\"screen-reader-text\">Adding a new controller (STM32F103C8 \u201cBlue Pill\u201d) to the FLProg program.<\/span><\/a><\/p>\n<div class=\"rcl-rating-box rating-type-post box-default\"><div class=\"rating-wrapper\"><span class=\"vote-heart\"><i class=\"rcli fa-heartbeat\" aria-hidden=\"true\"><\/i><\/span><span class=\"rating-value rating-value-view\" title=\"See history\" data-rating=\"b2JqZWN0X2lkOjYzNDksb2JqZWN0X2F1dGhvcjo5MTc3LHJhdGluZ190eXBlOnBvc3QscmF0aW5nX3N0YXR1czp2aWV3\" onclick=\"rcl_view_list_votes(this);\"><span class=\"rating-plus\">1<\/span><\/span><\/div><\/div>","protected":false},"author":9177,"featured_media":6432,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"telegram_tosend":false,"telegram_tosend_message":"","telegram_tosend_target":0,"generate_page_header":"","footnotes":""},"categories":[11],"tags":[],"class_list":["post-6349","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"translation":{"provider":"WPGlobus","version":"3.0.5","language":"en","enabled_languages":["ru","en","uk"],"languages":{"ru":{"title":true,"content":true,"excerpt":false},"en":{"title":true,"content":true,"excerpt":false},"uk":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/posts\/6349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/users\/9177"}],"replies":[{"embeddable":true,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/comments?post=6349"}],"version-history":[{"count":16,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/posts\/6349\/revisions"}],"predecessor-version":[{"id":6434,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/posts\/6349\/revisions\/6434"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/media\/6432"}],"wp:attachment":[{"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/media?parent=6349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/categories?post=6349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flprog.ru\/en\/wp-json\/wp\/v2\/tags?post=6349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}