Open103R 示例程序(基于 HAL 库)说明
Open103R
示例程序(基于 HAL 库)说明
程 序 说 明
关 于 STM32CubeMx
通过 STM32CubeMX 生成的基于 HAL 库的程序源代码,相较于经典库的代码而言,更加合理和清
晰。STM32CubeMX 配置界面是图形化的,参数设置相比于直接修改源代码更为直观。
但是,用户对所需资源进行配置之后,经由 STM32CubeMX 生成的代码并不是直接可用,还需要
在/* USER CODE BEGIN */和/* USER CODE END */之间中加入相应的逻辑。
每次在 STM32CubeMX 对程序的配置进行修改之后,生成的新代码会覆盖旧的代码。但是用户写
在/* USER CODE BEGIN */和/* USER CODE END */之间的代码会得到保留。
代 码 编 译 环 境
目前(2016 年 12 月)STM32CubeMX 可以根据 IDE 生成 EWARM / MDK-ARM / TrueSTUDIO /
SW4STM32 等工程。这可以通过 Project Settings Toolchain / IDE 进行设置。
我们提供的示例程序都是通过 MDK-ARM(Keil 5)进行编译,并且验证通过。如果打算直接使用
MDK-ARM 工程,那么电脑必须安装 Keil 5(或以上)。连接好下载器之后,打开 Keil,点击的 Build
编译工程,然后点击 Download 按钮,就可以把编译好的程序写入到芯片。下面所有的示例程序
使用过程的说明,均不会对开发环境配置和程序下载进行赘述。如有需要,请参阅相关手册。
版本:V1.2.1,日期:2017 年 2 月 21 日
1
Open103R 示例程序(基于 HAL 库)说明
目 录
程序说明 .................................................................................................................................................. 1
关于 STM32CubeMx ........................................................................................................................... 1
代码编译环境 .................................................................................................................................. 1
目录 .......................................................................................................................................................... 2
GPIO .......................................................................................................................................................... 4
EXTI ........................................................................................................................................................... 4
TIM ........................................................................................................................................................... 4
PWM ......................................................................................................................................................... 5
USART ....................................................................................................................................................... 5
USART_DMA ........................................................................................................................................ 5
USART_IT .......................................................................................................................................... 6
USART_printf .................................................................................................................................. 6
ADC_DMA ................................................................................................................................................. 7
DAC ........................................................................................................................................................... 7
I2C ............................................................................................................................................................. 8
SPI ............................................................................................................................................................. 8
CAN ........................................................................................................................................................... 9
DS18B20 ................................................................................................................................................... 9
RTC .......................................................................................................................................................... 10
MCU_Temperature ................................................................................................................................. 10
IWDG ...................................................................................................................................................... 11
2
版本:V1.2.1,日期:2017 年 2 月 21 日
Open103R 示例程序(基于 HAL 库)说明
WWDG .................................................................................................................................................... 11
CRC ......................................................................................................................................................... 12
SDIO ........................................................................................................................................................ 12
FATFS ...................................................................................................................................................... 13
LCD_Display ............................................................................................................................................ 13
LCD_Touch .............................................................................................................................................. 13
USB_FS .................................................................................................................................................... 14
CDC_Standalone ............................................................................................................................ 14
HID_Standalone ............................................................................................................................ 14
MSC_Standalone ............................................................................................................................ 15
FreeRTOS ................................................................................................................................................ 15
uCOS_III .................................................................................................................................................. 15
版本:V1.2.1,日期:2017 年 2 月 21 日
3
Open103R 示例程序(基于 HAL 库)说明
GPIO
描述:
此程序演示如何通过 HAL 库,设置和使用 GPIO。
工程位置:
STM32CubeMX 工程位置:GPIO\GPIO.ioc
Keil 工程位置:GPIO\MDK-ARM\GPIO.uvprojx
预期结果:
1) 插上 LED JMP 跳线帽(4 个)。
2) 拨动 5 向摇杆或者按下 USER KEY 键,会点亮对应的 LED 指示灯。
EXTI
描述:
此程序演示通过外部中断(按键)的方式执行回调函数。
工程位置:
STM32CubeMX 工程位置:EXTI\EXTI.ioc
Keil 工程位置:EXTI\MDK-ARM\EXTI.uvprojx
预期结果:
1) 插上 LED1 的跳线帽。
2) 按下 USER KEY 按键,便可切换 LED1 指示灯的状态。
TIM
描述:
此程序演示通过定时器中断的方式执行回调函数。
工程位置:
STM32CubeMX 工程位置:TIM\TIM.ioc
Keil 工程位置:TIM\MDK-ARM\TIM.uvprojx
版本:V1.2.1,日期:2017 年 2 月 21 日
4
Open103R 示例程序(基于 HAL 库)说明
预期结果:
1) 插上 LED JMP 跳线帽(4 个)。
2) LED1 / LED2 / LED3 / LED4 指示灯闪烁。
PWM
描述:
此程序演示通过 STM32 芯片的 PWM 定时器,对输出电压进行控制。
工程位置:
STM32CubeMX 工程位置:PWM\PWM.ioc
Keil 工程位置:PWM\MDK-ARM\PWM.uvprojx
预期结果:
1) 插上 LED1 的跳线帽。
2) LED 指示灯亮度逐渐变化。
USART
USART_DMA
描述:
此程序演示以直接内存存取(DMA)的方式,通过板载的 USART 接口连续输出信息。
工程位置:
STM32CubeMX 工程位置:USART_DMA\USART_DMA.ioc
Keil 工程位置:USART_DMA\MDK-ARM\USART_DMA.uvprojx
预期结果:
1) 通过 USB 串口模块(例如 PL2303 模块)连接板载的 USART1 接口和电脑的 USB 口。其
中模块的 Rx 开发板的 Tx,开发板的 Tx 模块的 Rx。
2) 电脑安装串口查看软件,并设置串口:波特率 115200,数据位 8,停止位 1,校验位无,
流控制无。
3) 开启串口之后,可以查看到连续的串口信息打印。
版本:V1.2.1,日期:2017 年 2 月 21 日
5
Open103R 示例程序(基于 HAL 库)说明
USART_IT
描述:
此程序演示以中断的方式,通过板载的 USART 接口接收信息。
工程位置:
STM32CubeMX 工程位置:USART_IT\USART_IT.ioc
Keil 工程位置:USART_IT\MDK-ARM\USART_IT.uvprojx
预期结果:
1) 通过 USB 串口模块(例如 PL2303 模块)连接板载的 USART1 接口和电脑的 USB 口。其
中模块的 Rx 开发板的 Tx,开发板的 Tx 模块的 Rx。
2) 电脑安装串口查看软件,并设置串口:波特率 115200,数据位 8,停止位 1,校验位无,
流控制无。
3) 开启串口之后,电脑端通过串口连续发送 10 个字符,这些字符会通过串口重新打印出
来。
USART_printf
描述:
此程序演示以轮询的方式,通过板载的 USART 接口输出信息。
工程位置:
STM32CubeMX 工程位置:USART_printf\USART_printf.ioc
Keil 工程位置:USART_printf\MDK-ARM\USART_printf.uvprojx
预期结果:
1) 通过 USB 串口模块(例如 PL2303 模块)连接板载的 USART1 接口和电脑的 USB 口。其
中模块的 Rx 开发板的 Tx,开发板的 Tx 模块的 Rx。
2) 电脑安装串口查看软件,并设置串口:波特率 115200,数据位 8,停止位 1,校验位无,
流控制无。
3) 开启串口之后,可以查看到串口信息打印,每隔一秒钟打印一次。
版本:V1.2.1,日期:2017 年 2 月 21 日
6
Open103R 示例程序(基于 HAL 库)说明
ADC_DMA
描述:
此程序演示通过以直接内存存取(DMA)的方式,连续进行 AD 采集。
工程位置:
STM32CubeMX 工程位置:ADC_DMA\ADC_DMA.ioc
Keil 工程位置:ADC_DMA\MDK-ARM\ADC_DMA.uvprojx
预期结果:
1) 将 Analog Test Board 模块接入 ADC+DAC(SPI-1)接口。
2) 通过 USB 串口模块(例如 PL2303 模块)连接板载的 USART1 接口和电脑的 USB 口。其
中模块的 Rx 开发板的 Tx,开发板的 Tx 模块的 Rx。
3) 电脑安装串口查看软件,并设置串口:波特率 115200,数据位 8,停止位 1,校验位无,
流控制无。
4) 转动 Analog Test Board 模块上面的两个电位器旋钮,串口会打印读到的 AD 信息:
******** ADC DMA Example ********
AD1 value = 3.298V
AD2 value = 1.647V
******** ADC DMA Example ********
AD1 value = 3.298V
AD2 value = 1.647V
DAC
描述:
此程序演示通过 STM32 芯片的 DMA 通道输出三角波信号。
工程位置:
STM32CubeMX 工程位置:DAC\DAC.ioc
Keil 工程位置:DAC\MDK-ARM\DAC.uvprojx
预期结果:
1) 将 Analog Test Board 模块接入 ADC+DAC(SPI-1)接口。
7
版本:V1.2.1,日期:2017 年 2 月 21 日
Open103R 示例程序(基于 HAL 库)说明
2) Analog Test Board 模块上的 5V 管脚接到板子上任意 5V 输出管脚上。
3) Analog Test Board 模块会发出声音。
I2C
描述:
此程序演示通过 I2C 接口读写 AT24 EEPROM。
工程位置:
STM32CubeMX 工程位置:I2C-AT24C04\I2C4.ioc
Keil 工程位置:I2C-AT24C04\MDK-ARM\I2C-AT24C04.uvprojx
预期结果:
1) 将 AT24/FM24 Board 模块接到 I2C1 口上。
2) 通过 USB 串口模块(例如 PL2303 模块)连接板载的 USART1 接口和电脑的 USB 口。其
中模块的 Rx 开发板的 Tx,开发板的 Tx 模块的 Rx。
3) 电脑安装串口查看软件,并设置串口:波特率115200,数据位8,停止位1,校验
位无,流控制无。
4) 按下板子的复位按键之后,EEPROM 会被写入数据,然后被读出数据。数据会通过串口
打印出来。
SPI
描述:
此程序演示通过 SPI 接口读写 AT45DBXX Flash。
工程位置:
STM32CubeMX 工程位置:SPI-AT45DBXX\SPI-AT45DBXX.ioc
Keil 工程位置:SPI-AT45DBXX\MDK-ARM\SPI-AT45DBXX.uvprojx
预期结果:
1) 将 AT45DBXX DataFlash Board 模块接到 SPI-1 接口上。
2) 通过 USB 串口模块(例如 PL2303 模块)连接板载的 USART1 接口和电脑的 USB 口。其
中模块的 Rx 开发板的 Tx,开发板的 Tx 模块的 Rx。
版本:V1.2.1,日期:2017 年 2 月 21 日
8