论坛» DIY与开源设计» 电子DIY

墙裂推荐: 用stm32f103c8t6最小系统板玩转arduino!

工程师
2019-07-12 23:17 1楼

很好的一个DIY,不敢独享,特分享给大家!


一、硬件:
某宝搜索“stm32f103c8t6最小系统板”,实物如下图所示:

二、软件:
2.1、从arduino官网https://www.arduino.cc下载Arduino IDE,我下载的是zip免安装版本,文件名:arduino-1.8.7-windows.zip;
2.2、从https://github.com/rogerclarkmelbourne/Arduino_STM32下载stm32的arduino硬件库,文件名:Arduino_STM32-master.zip;
2.3、从https://github.com/rogerclarkmelbourne/STM32duino-bootloader下载bootloader文件,文件名:STM32duino-bootloader-master.zip;
2.4、从https://developer.arm.com/open-source/gnu-toolchain/gnu-rm下载GNU Arm Embedded Toolchain,文件名:gcc-arm-none-eabi-7-2018-q2-update-win32.zip


2.5、解压以上四个压缩包;
2.6、把Arduino_STM32-master文件夹改名为Arduino_STM32并移动到arduino-1.8.7\hardware目录下;
2.7、把gcc-arm-none-eabi-7-2018-q2-update-win32移动到arduino-1.8.7\hardware\Arduino_STM32\tools目录下;
2.8、在arduino-1.8.7\hardware\Arduino_STM32\STM32F1\platform.txt中添加目录定义,如下两行:
runtime.hardware.path=./hardware/Arduino_STM32
runtime.tools.arm-none-eabi-gcc.path=./hardware/Arduino_STM32/tools/gcc-arm-none-eabi-7-2018-q2-update-win32
2.9、把arduino-1.8.7\hardware\Arduino_STM32\tools\gcc-arm-none-eabi-7-2018-q2-update-win32\arm-none-eabi\include\sys\cdefs.h中的宏定义__always_inline改为:
//#define __always_inline __inline__ __attribute__((__always_inline__))
#define __always_inline __attribute__((__always_inline__))
2.10、运行arduino-1.8.7\hardware\Arduino_STM32\drivers\win\install_drivers.bat安装驱动,驱动包括Maple DFU driver和Maple Serial driver,
其中Maple DFU driver用于更新程序,Maple Serial driver用于USB转串口。
三、操作:
3.1、使用串口或仿真器stlink烧录"STM32duino-bootloader-master.zip\STM32duino-bootloader-master\bootloader_only_binaries\generic_boot20_pc13.bin"文件到stm32f103c8t6最小系统板;
3.2、使用usb数据线直接连接stm32f103c8t6最小系统板的Micro USB接口,根据提示安装驱动;


3.3、运行arduino ide,文件\新建,并设置开发板,如下图所示:

3.4、添加程序:
#include

#define BOARD_LED_PIN PC13

static void vLEDFlashTask(void *pvParameters) {
for (;;) {
vTaskDelay(500);
digitalWrite(BOARD_LED_PIN, HIGH);
vTaskDelay(500);
digitalWrite(BOARD_LED_PIN, LOW);
}
}

static void vSerialTask(void *pvParameters) {
for (;;) {
Serial.println("LED OFF");
while(!(digitalRead(BOARD_LED_PIN)));
Serial.println("LED ON");
while((digitalRead(BOARD_LED_PIN)));
}
}

void setup() {
// initialize the digital pin as an output:
pinMode(BOARD_LED_PIN, OUTPUT);
Serial.begin(9600);
xTaskCreate(vLEDFlashTask,
"Task1",
configMINIMAL_STACK_SIZE,
NULL,
tskIDLE_PRIORITY + 2,
NULL);
xTaskCreate(vSerialTask,
"Task2",
configMINIMAL_STACK_SIZE,
NULL,
tskIDLE_PRIORITY + 2,
NULL);
vTaskStartScheduler();
}

void loop() {
// Insert background code here
}
3.5、验证/编译并上传,运行效果如下:



工程师
2019-07-12 23:28 2楼

STM32 arduino 牛! 看样子103系列各种芯片都支持了

工程师
2019-07-12 23:30 3楼

谢谢分享

菜鸟
2019-07-12 23:34 4楼

感谢楼主的分享

工程师
2019-07-12 23:35 5楼

这样玩arduino, 成本确实低,确实是好主意!

工程师
2019-07-12 23:40 6楼

很NICE, 有空一定玩玩!

工程师
2019-07-12 23:57 7楼

Arduino 确实很棒! 入门简单, 也很实用!创客和电子爱好者必备!

高工
2019-07-13 09:01 8楼

arduino还是入门级的东西。秀秀还是可以的

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]