1. 介绍
标准STM32下载方式:
-
U-LINK / J-LINK 烧写
-
ISP烧写.(串口方式. 硬件 BOOT0跳到3.3V BOOT1跳到GND.按复位后 启动ISP烧录软件 烧录时记得选择 擦除选项)
-
前言:本开发板串口下载分2种方式
方式1:官方下载方式(配套官方下载软件,步骤繁琐,下载复杂)
下载软件:官方配套软件(Flash
loader)
下载硬件:USB转TTL串口通讯工具(注意不是RS232, 232电平为+12 TTL电平为+5V )
操作步骤:1. BOOT0接GND BOOT1接3.3V
2. 连接串口线(RX->TX TX->RX GND->GND)
3. 复位开发板
4. 启动下载软件,选择串口号,
5. 如不出意外,加载需下载程序文件,下载完成。
6. 拔掉BOOT0 , BOOT1线
7. 复位,程序运行。
方式2:本店下载方式(配套国内第三方下载软件,步骤简单,下载容易)
下载软件:国内第三方下载软件(mcuisp)
下载硬件:本店配套USB转TTL下载器
操作步骤:1. 接好排线
2. 打开软件(选择好串口号)
3. 点击下载按钮
4. 程序运行
-
-
STM32F103RCT6开发板
-
板载为STM32F103RCT6芯片. Cortex-M3 32-bit RISC
-
72MHz,1.25 DMIPS/MHz;工作电压:2-3.6V. 8M晶振可通过倍频设置,令主频为72M
-
封 装:LQFP64;I/O口:64
-
存储资源:256kB Flash,48kB RAM (方便移植UCGUI LWIP等等占用资源比较多的协议包)
-
接口资源:2xSPI,5xUSART,1xI2S,2xI2C LCD,1xSDIO,1xUSB,1xCAN
-
模数转换:3xAD(12位,1us,分时16通道),2xDA(12位)
-
调试下载:支持JTAG/SWD接口的调试下载,支持IAP
-
采用AMS1117-3.3V芯片,将电压稳压为3.3V
-
电源LED, 用户LED, 复位按键.
startup_stm32f10x_cl.s 互联型的STM32F105xx,STM32F107xx
startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx
startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_ld_vl.s 小容量的STM32F100xx
startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_md_vl.s 中容量的STM32F100xx
startup_stm32f10x_xl.s 超大容量FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx
一般说STM32单片机的命名都是STM32F103XYZW这样的方式,其中X表示引脚数,Y表示ROM容量,Z表示封装方式,W表示工作温度范围,比如RCT6表示为64引脚、256KB和LQFP封装,工业温度范围。
针对ROM容量的字符,表示的容量是:
6-32KB 8-64KB B-128KB C-256KB D-384KB E-512KB F-768KB G-1024KB
其中:ROM容量为16~32K就是LD 64K~128K的就是MD 256~512K的就是HD (RCT6应当采用 HD)
2. 测试LED
工程代码 0.zip.
硬件连接: PD2和 LED脚短接, 串口接GND/PA9/PA10.
测试: PC端打开sscom32 9600 N 8 1 打开串口, 定时1000ms 自动发送 Hex 45 0d 0a, 然后会收到 USART_RX_BUF=[E]. 字样. 且 RCT6板子上 LED 持续交替亮灭.
3. 移植FreeRTOS
借助 cubeMX (一定先装JDK1.7.0_45版本, ST够坑爹), help -> install new library. 选择 STM32F1的最新中间件(目前是 1.6.0).
在 cubeMX 中新建工程 RCT6_FreeRTOS_Template, 选择芯片 stm32f103rc, 选中 FreeRTOS/uart1,同时把PD2设置成output, 点击菜单"Generate Code"产生 MDK5 的工程代码.
用Keil打开工程, 设置 project options, 确认 Device stm32f103rc, IROM=0x40000=256KB IRAM=0xC00048KB, Xtal=8Mhz Debug中FlashDownload对应的为256KB的设备.
同时需要 屏蔽代码 __HAL_AFIO_REMAP_SWJ_DISABLE(); 否则 Debug 无法在线调试.
范例实现了线程中每秒亮灭LED, 同时通过Queue通知串口线程状态, 串口同时收取PC端指令, 退出线程.
工程太大, main.zip
也可以在 keil 5 中直接使用 FreeRTOS.
1. 在 上下载 FreeRTOSv9.0.0.exe. 双击安装. 大概下载约 305MB 的内容.
2. 进入 FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil 目录, 打开keil工程, 出现. 单击“Migrate to Device Pack”按钮,接着单击“确定”按钮,编译就可以了.
3. 在 keil 5 中建立工程, 在 manager Run-Time Enviroment 窗口中可以可选 FreeRTOS.
另外一种RTOS的方式,
直接使用 Keil RTX
1. 新建 STM32F103RC的新工程. 在 manager Run-Time Enviroment 窗口下. 选中 1. CMSIS->CORE 2.CMSIS->RTOS2(API)->Keil RTX5 3. device -> startup 其他附加项.
2. 然后添加自定义 main.c 以及其他HAL等内容.
CMSIS Driver层的USART驱动:
1.
选择CMSIS Driver 的USART. (额外会添加 DMA支持)
2. 配置RTE_Device.h, 设置
High-speed Clock为8M, 并且设置 USART1的TX RX为PA9/10
-
extern ARM_DRIVER_USART Driver_USART1;
-
void myUSART1_Callback(uint32_t event)
-
{
-
//留作空实现, event = (ARM_USART_EVENT_SEND_COMPLETE, ARM_USART_EVENT_CTS ...)
-
}
-
-
static ARM_DRIVER_USART *USARTdrv = &Driver_USART1;
-
USARTdrv->Initialize( myUSART1_Callback );
-
USARTdrv->PowerControl(ARM_POWER_FULL);
-
USARTdrv->Control(ARM_USART_MODE_ASYNCHRONOUS | ARM_USART_DATA_BITS_8 | ARM_USART_PARITY_NONE | ARM_USART_STOP_BITS_1 | ARM_USART_FLOW_CONTROL_NONE, 115200);
-
USARTdrv->Control(ARM_USART_CONTROL_TX, 1);
-
-
USARTdrv->Send("Hello world\r\n", 13);
-
-
确实很好用啊. 内部细节基本上不用考虑了.可怜哥做了这么多年的驱动,感觉离下岗不远了.
使用内置的printf
1.
使用菜单"project->manager->run time enviroment", 选择COMPILE->IO -> STDOUT
2. 新添加文件"User Code Template" -> Compiler -> STDOUT via USART. 产生 stdout_USART.c 文件, 配置此文件设置串口号为1 以及波特率 115200. 即可.
3. main 代码中
-
extern int stdout_init (void);
-
stdout_init();
-
printf("Hello World.\r\n");
-
-
这么简单, 让底层人员怎么活.
--------------------------------------------------------------------------------------------------------------
http://blog.csdn.net/u011976086/article/details/54342447
http://blog.csdn.net/u011976086/article/details/73236540
http://blog.csdn.net/u011976086/article/details/75258499 # USB CDC
http://blog.csdn.net/u011976086/article/details/75305602 # RTC
如何使用RTX建立工程的实例, 很详细了, keil RTX 官网上有 getting startted PDF, 写的也很详细.
--c99 编译选项加上去编译就OK. 要扩展多个外设,
使用菜单"project->manager->run time enviroment" , 切记使用 MDK-PLUS 版本
LED灯 Toggle + console 输入输出的 RTX 例程.
4. 各种外设
5. 电机控制. IMU + 双轮轨迹
阅读(3141) | 评论(0) | 转发(0) |