Skip to content

jichaowang02-lang/ai-mcu-codegen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿค– AI MCU Codegen

AI-powered desktop tool that generates MCU project files from natural language.

Currently supports STM32 (CubeMX + HAL + Keil5), with more platforms coming soon.

Python PySide6 License Platform


๐Ÿ“– ็ฎ€ไป‹

AI MCU Codegen ๆ˜ฏไธ€ไธชๆœฌๅœฐๆกŒ้ขๅบ”็”จ๏ผŒ้€š่ฟ‡่‡ช็„ถ่ฏญ่จ€ๆ่ฟฐ็กฌไปถ้œ€ๆฑ‚๏ผŒ่ฐƒ็”จๅคง่ฏญ่จ€ๆจกๅž‹๏ผˆๅ…ผๅฎน OpenAI Chat Completions API๏ผ‰๏ผŒ่‡ชๅŠจ็”Ÿๆˆ้ขๅ‘ๅตŒๅ…ฅๅผๅผ€ๅ‘็š„ๅทฅ็จ‹้…็ฝฎๅ’Œไปฃ็ ้ชจๆžถใ€‚

ไฝ ๅช้œ€่ฆ็”จไธ€ๅฅ่ฏๆ่ฟฐไฝ ๆƒณๅšไป€ไนˆ๏ผŒๅทฅๅ…ทๅฐฑไผšไธบไฝ ็”Ÿๆˆ .ioc ้…็ฝฎๆ–‡ไปถใ€HAL ๅˆๅง‹ๅŒ–ไปฃ็ ใ€ๆŽฅ็บฟๆ–นๆกˆๅ’Œๅผ€ๅ‘่ฏดๆ˜Žๆ–‡ๆกฃโ€”โ€”ๅผ€็ฎฑๅณๅฏๅœจ CubeMX / Keil5 ไธญ็ปง็ปญๅผ€ๅ‘ใ€‚

โœจ ๆ ธๅฟƒ็‰นๆ€ง

็‰นๆ€ง ่ฏดๆ˜Ž
๐Ÿ—ฃ๏ธ ่‡ช็„ถ่ฏญ่จ€่พ“ๅ…ฅ ็”จไธญๆ–‡ๆˆ–่‹ฑๆ–‡ๆ่ฟฐไฝ ็š„็กฌไปถ้œ€ๆฑ‚
๐Ÿ”€ ๅŒๆจกๅผ็”Ÿๆˆ config_only ไป…็”Ÿๆˆ้…็ฝฎ / firmware_full ็”ŸๆˆๅฎŒๆ•ดๅ›บไปถ้ชจๆžถ
๐Ÿง  ๆ™บ่ƒฝๆŠ€่ƒฝ็ณป็ปŸ ่‡ชๅŠจๅŒน้…ๆ—ถ้’Ÿ่ง„ๅˆ’ใ€ๅค–่ฎพๆ˜ ๅฐ„ใ€HAL ้…็ฝฎ็ญ‰ไธ“ไธšๆŠ€่ƒฝ
โœ… ่‡ชๅŠจ็ป“ๆžœๆŸฅ้ชŒ ็”ŸๆˆๅŽ่‡ชๅŠจๅฏน็ป“ๆžœ่ฟ›่กŒๅฎŒๆ•ดๆ€งๅˆ†ๆž๏ผŒ็ป™ๅ‡บ่ฏ„ๅˆ†ๅ’Œๆ”น่ฟ›ๅปบ่ฎฎ
๐Ÿ’ฌ AI ๅฏน่ฏๆ‰“็ฃจ ็”ŸๆˆๅŽๅฏไธŽ AI ๅคš่ฝฎไบคไบ’๏ผŒไฟฎๆ”นๆ–‡ไปถใ€่งฃ้‡Šไปฃ็ ใ€ไผ˜ๅŒ–้…็ฝฎ
๐Ÿ–ฅ๏ธ ๆกŒ้ข GUI ๅŸบไบŽ PySide6 ็š„ๅ›พๅฝข็•Œ้ข๏ผŒๅฏ่ง†ๅŒ–่ฟ›ๅบฆใ€ๆ—ฅๅฟ—ใ€็ป“ๆžœๆ ‡็ญพ้กต
โŒจ๏ธ CLI ๆ”ฏๆŒ ๅ‘ฝไปค่กŒๆ‰นๅค„็†๏ผŒ้€‚ๅˆ้›†ๆˆๅˆฐ่‡ชๅŠจๅŒ–ๆต็จ‹
๐Ÿ”Œ ๆจกๅž‹ๅฏๅˆ‡ๆข ๅ…ผๅฎนไปปไฝ• OpenAI API ๆ ผๅผ็š„ๆจกๅž‹ๆœๅŠก

๐Ÿ—๏ธ ็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ็”จๆˆท็•Œ้ขๅฑ‚                          โ”‚
โ”‚           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”               โ”‚
โ”‚           โ”‚  GUI      โ”‚    โ”‚  CLI     โ”‚               โ”‚
โ”‚           โ”‚ (gui.py)  โ”‚    โ”‚ (cli.py) โ”‚               โ”‚
โ”‚           โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜               โ”‚
โ”‚                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                    ๆœๅŠกๅฑ‚ โ”‚                              โ”‚
โ”‚              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                   โ”‚
โ”‚              โ”‚   service.py         โ”‚                   โ”‚
โ”‚              โ”‚  (็ผ–ๆŽ’ + ็ป“ๆžœๆŸฅ้ชŒ     โ”‚                   โ”‚
โ”‚              โ”‚   + AI ๅฏน่ฏ็ฎก็†)      โ”‚                   โ”‚
โ”‚              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                    ๆ ธๅฟƒๅฑ‚ โ”‚                              โ”‚
โ”‚     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”‚
โ”‚     โ”‚                   โ”‚                   โ”‚          โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚ โ”‚ skills.py  โ”‚  โ”‚ generator.py  โ”‚  โ”‚ llm_client.py โ”‚  โ”‚
โ”‚ โ”‚ ๆŠ€่ƒฝๅŠ ่ฝฝ    โ”‚  โ”‚ Prompt ๆž„ๅปบ   โ”‚  โ”‚ API ้€šไฟก       โ”‚  โ”‚
โ”‚ โ”‚ + ๅŒน้…      โ”‚  โ”‚ + ็ป“ๆžœ่งฃๆž    โ”‚  โ”‚ + JSON ๆๅ–    โ”‚  โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                    ๆ•ฐๆฎๅฑ‚                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ models.py  โ”‚  โ”‚ config.py โ”‚  โ”‚ skills/*.md      โ”‚  โ”‚
โ”‚  โ”‚ ๆ•ฐๆฎ็ป“ๆž„    โ”‚  โ”‚ ้…็ฝฎ็ฎก็†   โ”‚  โ”‚ ๆŠ€่ƒฝๆจกๆฟๆ–‡ไปถ       โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”€ ไธค็ง็”Ÿๆˆๆจกๅผ

ๆจกๅผไธ€๏ผšconfig_only โ€” ไป…็”Ÿๆˆ้…็ฝฎ

้€‚ๅˆไฝ ๅŽ็ปญ่‡ชๅทฑๅœจ CubeMX / Keil5 ไธญ็ปง็ปญๆญๅปบๅทฅ็จ‹ใ€‚

่พ“ๅ‡บๆ–‡ไปถ๏ผš

ๆ–‡ไปถ ่ฏดๆ˜Ž
<project>.ioc STM32CubeMX ้…็ฝฎ่‰็จฟ
Core/Inc/ai_board_config.h ้ขๅ‘ๅบ”็”จๅฑ‚็š„้…็ฝฎๆ‘˜่ฆๅคดๆ–‡ไปถ
Core/Src/ai_board_config.c ้…็ฝฎๅฎž็Žฐๆบๆ–‡ไปถ
docs/generated-notes.md ๅŽ็ปญๆ“ไฝœ่ฏดๆ˜Žๅ’Œๆณจๆ„ไบ‹้กน

ๆจกๅผไบŒ๏ผšfirmware_full โ€” ็”ŸๆˆๅฎŒๆ•ดๅ›บไปถ้ชจๆžถ

่ฎฉ AI ็›ดๆŽฅ็”Ÿๆˆๅฏๅœจ Keil5 ไธญ็ปง็ปญๅผ€ๅ‘็š„็จ‹ๅบๆก†ๆžถ๏ผŒๅนถ้™„ๅธฆๆŽฅ็บฟๆ–นๆกˆใ€‚

่พ“ๅ‡บๆ–‡ไปถ๏ผš

ๆ–‡ไปถ ่ฏดๆ˜Ž
<project>.ioc STM32CubeMX ้…็ฝฎ่‰็จฟ
Core/Inc/main.h ไธป็จ‹ๅบๅคดๆ–‡ไปถ
Core/Src/main.c ๅŒ…ๅซ main()ใ€็ณป็ปŸๅˆๅง‹ๅŒ–ใ€ๅค–่ฎพๅˆๅง‹ๅŒ–ใ€ไธปๅพช็Žฏๆก†ๆžถ
Core/Inc/ai_board_config.h ๆฟ็บง้…็ฝฎๅคดๆ–‡ไปถ
Core/Src/ai_board_config.c ๆฟ็บง้…็ฝฎๅฎž็Žฐ
docs/wiring.md ๆŽฅ็บฟๆ–นๆกˆ๏ผˆๅผ•่„š่ฟžๆŽฅใ€ไพ›็”ตใ€้€šไฟกๆŽฅๅฃ๏ผ‰
docs/keil5-notes.md Keil5 ๅฏผๅ…ฅๅ’ŒๅŽ็ปญๅผ€ๅ‘ๆŒ‡ๅ—

ๆณจๆ„๏ผš ่‹ฅๆœชๆไพ›ๆฟ็บงๆ™ถๆŒฏ้ข‘็އใ€ๅค–่ฎพๅž‹ๅท็ญ‰็ป†่Š‚๏ผŒAI ไผšๅœจ็ป“ๆžœไธญๆ˜Ž็กฎๆ ‡ๆณจ"ๅ‡่ฎพ"ๅ’Œ"้ฃŽ้™ฉๆ้†’"ใ€‚


๐Ÿ’ฌ AI ๅฏน่ฏๆ‰“็ฃจ

็”ŸๆˆๅฎŒๆˆๅŽ๏ผŒไฝ ๅฏไปฅ็›ดๆŽฅๅœจ็•Œ้ขๅ†…ๅˆ‡ๆขๅˆฐ ใ€ŒAI ๅฏน่ฏใ€ ๆ ‡็ญพ้กต๏ผŒไธŽ AI ่ฟ›่กŒๅคš่ฝฎๅฏน่ฏๆฅๆ‰“็ฃจๅ’Œไผ˜ๅŒ–ๅทฒ็”Ÿๆˆ็š„้กน็›ฎใ€‚

ๅฏน่ฏ่ƒฝๅŠ›๏ผš

ๅŠŸ่ƒฝ ่ฏดๆ˜Ž
๐Ÿ“ ไฟฎๆ”นๆ–‡ไปถ ่ฆๆฑ‚ AI ไฟฎๆ”นๆŒ‡ๅฎšๆ–‡ไปถ๏ผˆๅฆ‚่ฐƒๆ•ดๅผ•่„šใ€ๆ”นๅ˜ๆ—ถ้’Ÿ้…็ฝฎ๏ผ‰๏ผŒไฟฎๆ”น่‡ชๅŠจๅ†™ๅ›ž็ฃ็›˜
๐Ÿ” ่งฃ้‡Šไปฃ็  ่ฏข้—ฎไปปไฝ•็”Ÿๆˆๆ–‡ไปถไธญ็š„ไปฃ็ ๅซไน‰ๅ’Œ่ฎพ่ฎกๆ€่ทฏ
โš™๏ธ ไผ˜ๅŒ–้…็ฝฎ ่ฎฉ AI ไผ˜ๅŒ– .ioc ้…็ฝฎใ€HAL ๅˆๅง‹ๅŒ–ๆˆ–ๅค–่ฎพๅ‚ๆ•ฐ
๐Ÿ”„ ๆŒ็ปญ่ฟญไปฃ ๆ”ฏๆŒๅคš่ฝฎๅฏน่ฏ๏ผŒ้€ๆญฅๅฎŒๅ–„้กน็›ฎ็›ดๅˆฐๆปกๆ„

็•Œ้ข็‰น็‚น๏ผš

  • ๐Ÿ’ฌ ็”จๆˆทๆถˆๆฏ่“่‰ฒๆฐ”ๆณกๅณๅฏน้ฝ๏ผŒAI ๅ›žๅค็™ฝ่‰ฒๆฐ”ๆณกๅทฆๅฏน้ฝ
  • ๐Ÿ“„ ๆ–‡ไปถไฟฎๆ”นไปฅ็ปฟ่‰ฒๅก็‰‡ๅฝขๅผๆ็คบ๏ผŒๅ†…ๅฎน่‡ชๅŠจๅ†™ๅ›ž็ฃ็›˜
  • ๐Ÿ—‘๏ธ ๆ”ฏๆŒใ€Œๆธ…็ฉบๅฏน่ฏใ€้‡็ฝฎไธŠไธ‹ๆ–‡

๐Ÿง  ๆŠ€่ƒฝ็ณป็ปŸ

ๆŠ€่ƒฝ็ณป็ปŸ้€š่ฟ‡ skills/ ็›ฎๅฝ•ไธ‹็š„ Markdown ๆ–‡ไปถๅฎšไน‰๏ผŒAI ไผšๆ นๆฎ็”จๆˆท้œ€ๆฑ‚่‡ชๅŠจๅŒน้…ๅนถๆฟ€ๆดป็›ธๅ…ณๆŠ€่ƒฝใ€‚

ๆŠ€่ƒฝ ็ฑปๅž‹ ๅŠŸ่ƒฝ
hal-conf ๐ŸŸข ๅง‹็ปˆๅฏ็”จ HAL ๆจกๅ—ๅฏ็”จๅปบ่ฎฎใ€้ฉฑๅŠจไพ่ต–ๅˆ†ๆž
ioc-writer ๐ŸŸข ๅง‹็ปˆๅฏ็”จ ็ป„็ป‡ .ioc ๆ–‡ไปถ็ป“ๆž„ๅ’Œๆœ€็ปˆ่พ“ๅ‡บ
clock-planning ๐Ÿ”ต ๆŒ‰้œ€ๆฟ€ๆดป ๆ—ถ้’Ÿๆ ‘ๆŽจๅฏผ๏ผˆPLLใ€SYSCLKใ€HCLKใ€PCLK๏ผ‰
peripheral-mapping ๐Ÿ”ต ๆŒ‰้œ€ๆฟ€ๆดป ๅค–่ฎพๅผ•่„šๅค็”จๆ–นๆกˆๅ’Œ GPIO ๆ˜ ๅฐ„

ไฝ ไนŸๅฏไปฅ่‡ชๅฎšไน‰ๆŠ€่ƒฝ๏ผšๅœจ skills/ ็›ฎๅฝ•ไธ‹ๅˆ›ๅปบๆ–ฐ็š„ .md ๆ–‡ไปถๅณๅฏ๏ผŒๆ ผๅผๅ‚่€ƒๅทฒๆœ‰ๆŠ€่ƒฝๆจกๆฟใ€‚


๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

็Žฏๅขƒ่ฆๆฑ‚

  • Python 3.10+
  • ไธ€ไธชๅ…ผๅฎน OpenAI Chat Completions API ็š„ๆจกๅž‹ๆœๅŠก + API Key

ๅฎ‰่ฃ…

git clone https://github.com/jichaowang02-lang/ai-mcu-codegen.git
cd ai-mcu-codegen
pip install -r requirements.txt

้…็ฝฎ

ๅคๅˆถ็Žฏๅขƒๅ˜้‡ๆจกๆฟๅนถๅกซๅ…ฅไฝ ็š„ API Key๏ผš

cp .env.example .env

.env ๆ–‡ไปถๅ†…ๅฎน๏ผš

STM32_AGENT_API_KEY=your_api_key_here       # ๅฟ…ๅกซ
STM32_AGENT_BASE_URL=https://your-api.com/v1  # ๅฏ้€‰๏ผŒๆœ‰้ป˜่ฎคๅ€ผ
STM32_AGENT_MODEL=gpt-5.3-codex              # ๅฏ้€‰๏ผŒๆœ‰้ป˜่ฎคๅ€ผ
STM32_AGENT_OUTPUT_DIR=generated              # ๅฏ้€‰๏ผŒ่พ“ๅ‡บ็›ฎๅฝ•
STM32_AGENT_TIMEOUT=120                       # ๅฏ้€‰๏ผŒ่ฏทๆฑ‚่ถ…ๆ—ถ(็ง’)

๐Ÿ’ป ไฝฟ็”จๆ–นๅผ

ๅ›พๅฝข็•Œ้ข๏ผˆๆŽจ่๏ผ‰

python main.py

็•Œ้ขๅŠŸ่ƒฝ๏ผš

  • ๐Ÿ“Š ้กถ้ƒจๅ›บๅฎš่ฟ›ๅบฆๆก๏ผŒๅฎžๆ—ถๆ˜พ็คบ็”Ÿๆˆ็Šถๆ€
  • ๐Ÿ“ ๅทฆไพงๆปšๅŠจ่กจๅ•๏ผŒๆ”ฏๆŒ้œ€ๆฑ‚่พ“ๅ…ฅใ€MCU ้€‰ๆ‹ฉใ€ๆจกๅผๅˆ‡ๆข
  • ๐Ÿ”ฝ ๅ†…็ฝฎๅธธ็”จ MCU ไธ‹ๆ‹‰ๅˆ—่กจ๏ผŒๆ”ฏๆŒ่‡ชๅฎšไน‰ๆทปๅŠ 
  • ๐Ÿ“‘ ๅณไพงๅคšๆ ‡็ญพ้กต๏ผš็ป“ๆžœๆ‘˜่ฆใ€็ป“ๆžœๆŸฅ้ชŒใ€AI ๅฏน่ฏใ€่ฟ่กŒๆ—ฅๅฟ—ใ€ๆŠ€่ƒฝๆ€ป่งˆ

ๅ‘ฝไปค่กŒ

# ๅŸบ็ก€็”จๆณ•
python main.py generate --spec "ไฝ ็š„้œ€ๆฑ‚ๆ่ฟฐ"

# ๅฎŒๆ•ดๅ‚ๆ•ฐ็คบไพ‹
python main.py generate ^
  --project smart_lock ^
  --mcu STM32F103C8T6 ^
  --mode firmware_full ^
  --spec "ไฝฟ็”จ USART1 ่พ“ๅ‡บ่ฐƒ่ฏ•ไฟกๆฏ๏ผŒI2C1 ้ฉฑๅŠจ OLED๏ผŒPA0 ๆŒ‰้”ฎ่พ“ๅ…ฅ๏ผŒPC13 LED๏ผŒSYSCLK 72MHz๏ผŒๅนถ็”ŸๆˆๆŽฅ็บฟๆ–นๆกˆใ€‚"

# ๆŸฅ็œ‹ๅฏ็”จๆŠ€่ƒฝ
python main.py skills

CLI ๅ‚ๆ•ฐ่ฏดๆ˜Ž๏ผš

ๅ‚ๆ•ฐ ๆ˜ฏๅฆๅฟ…ๅกซ ่ฏดๆ˜Ž
--spec โœ… ่‡ช็„ถ่ฏญ่จ€้œ€ๆฑ‚ๆ่ฟฐ
--project โŒ ้กน็›ฎๅ๏ผˆ้ป˜่ฎค stm32_ai_project๏ผ‰
--mcu โŒ ็›ฎๆ ‡ MCU ๅž‹ๅท
--mode โŒ config_only๏ผˆ้ป˜่ฎค๏ผ‰ๆˆ– firmware_full
--api-key โŒ LLM API Key๏ผˆไนŸๅฏ้€š่ฟ‡็Žฏๅขƒๅ˜้‡๏ผ‰
--base-url โŒ LLM ๆœๅŠกๅœฐๅ€
--model โŒ ๆจกๅž‹ๅ็งฐ
--out โŒ ่พ“ๅ‡บ็›ฎๅฝ•
--timeout โŒ ่ฏทๆฑ‚่ถ…ๆ—ถๆ—ถ้—ด๏ผˆ็ง’๏ผ‰

โœ… ่‡ชๅŠจ็ป“ๆžœๆŸฅ้ชŒ

ๆฏๆฌก็”ŸๆˆๅฎŒๆˆๅŽ๏ผŒๅทฅๅ…ทไผš่‡ชๅŠจๆ‰ง่กŒๅคš็ปดๅบฆ่ดจ้‡่ฏ„ไผฐ๏ผš

ๆฃ€ๆŸฅ้กน ่ฏดๆ˜Ž
ๆ–‡ไปถๅฎŒๆ•ดๆ€ง ๆฃ€ๆŸฅๅฟ…้œ€ๆ–‡ไปถๆ˜ฏๅฆๅ…จ้ƒจ็”Ÿๆˆ
็ฃ็›˜ๅ†™ๅ…ฅ ้ชŒ่ฏๆ–‡ไปถๆ˜ฏๅฆๆˆๅŠŸๅ†™ๅ…ฅ็ฃ็›˜
.ioc ่ดจ้‡ ๆฃ€ๆŸฅ MCU ไฟกๆฏใ€RCC/GPIO/ProjectManager ็ญ‰ๅŸบ็ก€้…็ฝฎ
main.c ็ป“ๆž„ ้ชŒ่ฏไธปๅ‡ฝๆ•ฐๅ’Œไธปๅพช็Žฏๆ˜ฏๅฆๅฎŒๆ•ด๏ผˆfirmware_full ๆจกๅผ๏ผ‰
ๆ–‡ๆกฃ็”Ÿๆˆ ๆฃ€ๆŸฅๆŽฅ็บฟๆ–นๆกˆใ€Keil5 ่ฏดๆ˜Ž็ญ‰ๆ–‡ๆกฃๆ˜ฏๅฆ้ฝๅ…จ
ๅ‡่ฎพไธŽ้ฃŽ้™ฉ ๆฑ‡ๆ€ปๆจกๅž‹ๅšๅ‡บ็š„ๅ‡่ฎพๅ’Œ้ฃŽ้™ฉๆ้†’

่ฏ„ไผฐ็ป“ๆžœไธบ 0-100 ๅˆ†๏ผš

  • โ‰ฅ 85 ๅˆ†๏ผš็ป“ๆžœๅฎŒๆ•ด๏ผŒๅฏ็›ดๆŽฅ็”จไบŽๅŽ็ปญๅผ€ๅ‘
  • 65-84 ๅˆ†๏ผšๅŸบๆœฌๅฏ็”จ๏ผŒๅปบ่ฎฎๆ ธๅฏนๅ…ณ้”ฎๅ‚ๆ•ฐ
  • < 65 ๅˆ†๏ผšๅญ˜ๅœจๆ˜Žๆ˜พ็ผบ้กน๏ผŒๅปบ่ฎฎไฟฎๆ”น้œ€ๆฑ‚้‡ๆ–ฐ็”Ÿๆˆ

๐Ÿ“ ้กน็›ฎ็ป“ๆž„

ai-mcu-codegen/
โ”œโ”€โ”€ main.py                 # ๅบ”็”จๅ…ฅๅฃ
โ”œโ”€โ”€ requirements.txt        # Python ไพ่ต–
โ”œโ”€โ”€ .env.example            # ็Žฏๅขƒๅ˜้‡ๆจกๆฟ
โ”œโ”€โ”€ skills/                 # ๆŠ€่ƒฝๆจกๆฟ็›ฎๅฝ•
โ”‚   โ”œโ”€โ”€ clock-planning.md   #   ๆ—ถ้’Ÿ่ง„ๅˆ’ๆŠ€่ƒฝ
โ”‚   โ”œโ”€โ”€ hal-conf.md         #   HAL ้…็ฝฎๆŠ€่ƒฝ๏ผˆๅง‹็ปˆๅฏ็”จ๏ผ‰
โ”‚   โ”œโ”€โ”€ ioc-writer.md       #   IOC ๆ–‡ไปถ็”ŸๆˆๆŠ€่ƒฝ๏ผˆๅง‹็ปˆๅฏ็”จ๏ผ‰
โ”‚   โ””โ”€โ”€ peripheral-mapping.md #  ๅค–่ฎพๆ˜ ๅฐ„ๆŠ€่ƒฝ
โ””โ”€โ”€ stm32_agent/            # ๆ ธๅฟƒไปฃ็ ๅŒ…
    โ”œโ”€โ”€ __init__.py          #   ็‰ˆๆœฌไฟกๆฏ (v0.1.0)
    โ”œโ”€โ”€ cli.py               #   ๅ‘ฝไปค่กŒๆŽฅๅฃ
    โ”œโ”€โ”€ config.py            #   ้…็ฝฎ็ฎก็†๏ผˆ็Žฏๅขƒๅ˜้‡ + ๅ‚ๆ•ฐ๏ผ‰
    โ”œโ”€โ”€ generator.py         #   Prompt ๆž„ๅปบ + ไปฃ็ ็”Ÿๆˆ + ็ป“ๆžœ่งฃๆž
    โ”œโ”€โ”€ gui.py               #   PySide6 ๅ›พๅฝข็•Œ้ข๏ผˆๅซ AI ๅฏน่ฏ้ขๆฟ๏ผ‰
    โ”œโ”€โ”€ llm_client.py        #   LLM API ๅฎขๆˆท็ซฏ๏ผˆๅ…ผๅฎน OpenAI ๆ ผๅผ๏ผ‰
    โ”œโ”€โ”€ models.py            #   ๆ•ฐๆฎๆจกๅž‹ๅฎšไน‰
    โ”œโ”€โ”€ service.py           #   ๆœๅŠก็ผ–ๆŽ’ + ็ป“ๆžœๆŸฅ้ชŒ + ๅฏน่ฏ็ฎก็†
    โ””โ”€โ”€ skills.py            #   ๆŠ€่ƒฝๅŠ ่ฝฝ + ๆ™บ่ƒฝๅŒน้…

๐Ÿ—บ๏ธ Roadmap

  • STM32 (CubeMX + HAL + Keil5) ๆ”ฏๆŒ
  • ๅŒๆจกๅผ็”Ÿๆˆ๏ผˆconfig_only / firmware_full๏ผ‰
  • ๆ™บ่ƒฝๆŠ€่ƒฝ็ณป็ปŸ
  • ่‡ชๅŠจ็ป“ๆžœๆŸฅ้ชŒ
  • ๅคš่ฝฎๅฏน่ฏๅผๆ‰“็ฃจ
  • ESP32 (ESP-IDF / Arduino) ๆ”ฏๆŒ
  • Arduino ๅนณๅฐๆ”ฏๆŒ
  • RISC-V (CH32V) ๆ”ฏๆŒ
  • ๆœฌๅœฐๆจกๅž‹ๆ”ฏๆŒ๏ผˆOllama ็ญ‰๏ผ‰
  • ็”Ÿๆˆ็ป“ๆžœๅކๅฒ็ฎก็†

๐Ÿค Contributing

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ


๐Ÿ“„ License

ๆœฌ้กน็›ฎ้‡‡็”จ MIT License ๅผ€ๆบใ€‚

About

๐Ÿค– AI-powered desktop tool that generates MCU project files from natural language. Currently supports STM32 (CubeMX + HAL + Keil5), with more platforms coming soon.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages