更新记录:
【20191108】——葛新越
解决“有时下拉一次复位引脚后,直接回到BIOS程序运行”和“有时回到BIOS程序运行后,重新上电无法再回到USER程序运行”的问题。
需要对应修改BIOS程序,详见BIOS程序readme.txt。
【20191108】1/2 引脚复位相关问题解决
在bios_api.c中,添加“component_fun=(void **)(GEC_COMPONENT_LST_START*MCU_SECTORSIZE); ”,获取BIOS函数表首地址。
【20191108】2/2 引脚复位相关问题解决
在BIOS_API_Init中,判断USER中串口更新中断和定时器中断是否为BIOS对应中断地址。若都是,则不作操作;否则修改为BIOS对应中断地址。
【20191109-1】——葛新越
测试在USER程序中继承BIOS底层驱动,包括GPIO,FLASH和UART。
将各自.h文件中USE_BIOS_GPIO,USE_BIOS_FLASH,USE_BIOS_UART设置为1,编译后机器码减少,且各功能正常。
【20191109-2】——葛新越
优化Flash构件,目前可以在任意有效地址(0x08000000-0x20000000)实现flash写入读取任意长度数据数组(数据类型为uint_8)。
【20191109-3】——葛新越
优化警告问题,主要是函数调用或变量赋值时类型不一致(系统强制类型转换时会警告)。
==================================================================================
工程名称:GPIO_Output_C_STM32-191109
版权所有:SUDA-ARM(sumcu.suda.edu.cn)
版本更新:2019-11-09
程序介绍:本程序为STM32的C语言模板工程。
本程序实现了:(1)每1S红灯闪烁一次,并通过串口UARTC(板上标识为uart2)输出红灯亮暗状态;
(2)若串口UART_USER(板上标识为uart0)接收到数据,则会将会回发收 到的数据(波特率115200)。
==================================================================================
1. 工程概述
(1)本工程为STM32L431RC微控制器无操作系统C语言模板工程
(2)使用串口UARTC(板上标识为uart2)与外界通信,波特率为115200,1位停止位,无校验
(3)启动串口UART_USER(板上标识为uart0)接收中断,回发接收数据
(4)在60秒内连续拉低ReSet脚6次以上(包括6次)程序回到BIOS运行,绿灯闪烁
2. 软件环境
(1)AHL-GEC-IDE V3.57
3. 硬件环境
核心板:金葫芦系列STM32L432RC核心板
UART2接线: microUSB串口线
UART0接线: USB转TTL串口线(如:PL2303HX)
4. 串口更新程序流程
将烧录了BIOS程序的MCU上,用于串口更新的串口(本工程中为UART2)与PC机连接;给MCU上电,并打开上位机程序,便可以开
始串口更新。串口更新的程序步骤如下:
(1)握手并获取MCU芯片信息:上位机程序点击“软件更新”->“串口更新”,进入串口更新界面。选择“重新连接”时,上位机会遍历连
接在PC机上的设备,逐个发送握手帧,握手帧得到MCU的正确回应时表示握手成功;此后,上位机会再发送一个命令帧获取芯片信息。
5.NMI中断(STM32L432RC没有NMI,以ReSet脚模拟)
使用场景:烧入User程序后出现错误,可将复位脚在一分钟内拉低6次以上(包括6次)使程序回到BIOS运行
实现的功能(04_GEC/gec.c中的pin_reset_judge();函数):
(1)在60s内连续拉低NMI引脚6次以内(不含6次),实现拉低一次NMI引脚绿灯闪烁一次,而后红灯闪烁USER程序正常运行;
(2)在60s内连续拉低NMI引脚6次,实现绿灯闪烁,一直停留在BIOS程序运行,此后(指无时长限制)再点NMI引脚还是停留在BIOS运行;
6.MCU扇区分配
(1)Flash分配
BIOS的FLASH: 0~16扇区, 0x08000000~0x08008800, 34KB
DY_CMD: 17~18扇区, 0x08008800~0x08009800, 4KB
CPT_LST: 19~20扇区, 0x08009800~0x0800a800, 4KB
CPT_FUN: 21~25扇区, 0x0800a800~0x0800d000, 10KB
USER的USER_INTVEC:26扇区,0x0800d000~0x0800d800, 2KB
FLASH:27~127扇区, 0x0800d800~0x08040000,202KB
(2)RAM分配
BIOS的RAM:64KB
GEC_BIOS_RAM_START = 0x20000000; /*BIOS RAM区域起始地址 */
GEC_BIOS_RAM_END = 0x20010000; /*BIOS RAM区域结束地址*/
User的RAM:56KB
GEC_USER_RAM_START = 0x20002000; /*USER RAM区域起始地址 */
GEC_USER_RAM_END = 0x20010000; /*USER RAM区域结束地址*/
7.BIOS和USER程序的衔接
(1)BIOS和USER程序的相互跳转
BIOS跳转到USER实现:将USER程序Flash的前两个字(即SP的初始值和复位向量)赋值给SP和PC指针;
USER跳转到BIOS实现:调用系统复位函数NVIC_SystemReset函数。
(2)共享中断服务例程
将中断向量表从BIOS的Flash拷贝到User的FLASH起始扇区,并将中断向量表的起始地址寄存武器SCB->VTOR修改为User的FLASH的中断向量表起始地址;
BIOS若使用某个中断服务例程不需要修改RAM的中断向量表的表项,而USER若使用某个中断服务例程需要对应的修改User的FLASH中断向量表的表项。
=============================================================================
声明:
(1)本源代码,在所提供的硬件系统测试通过,真诚奉献给社会,不足之处,欢迎指正。
(2)若使用其他硬件系统,移植代码时,请仔细根据自己的硬件匹配。
----------------------------------------------------------------------------
SD-ARM 技术服务:http://sumcu.suda.edu.cn; 0512-65214835
=============================================================================
C语言中的唯一的一个三目运算符
mFlag=(mFlag=='A'?'L':'A');
printf((mFlag=='A')?" LIGHT_RED:OFF--\n":" LIGHT_RED:ON==\n");
没有合适的资源?快使用搜索试试~ 我知道了~
stm32嵌入式实验考核32
共90个文件
c:26个
h:22个
o:14个
需积分: 0 0 下载量 109 浏览量
2024-01-25
13:53:25
上传
评论
收藏 964KB 7Z 举报
温馨提示
利用 STM32 小板实现+马达小板:实现马达 10 秒震动一次,马 达震动的同时红灯亮,否则绿灯亮。
资源推荐
资源详情
资源评论
收起资源包目录
32.7z (90个子文件)
32
32
02_CPU
cpu.h 188B
cmsis_version.h 2KB
core_cm4.h 121KB
mpu_armv7.h 11KB
cmsis_gcc.h 61KB
cmsis_compiler.h 9KB
03_MCU
mcu.h 2KB
MCU_drivers
flash.c 14KB
gpio.h 9KB
uart.h 6KB
flash.h 6KB
systick.h 779B
uart.c 14KB
systick.c 1KB
gpio.c 15KB
Linker_file
STM32L431RCTX_FLASH.ld 6KB
startup
stm32l431xx.h 1.1MB
stm32l4xx.h 7KB
startup_stm32l431rctx.s 12KB
system_stm32l4xx.c 14KB
system_stm32l4xx.h 3KB
.cproject 28KB
07_NosPrg
isr.c 656B
main.c 4KB
includes.h 5KB
.settings
language.settings.xml 2KB
06_SoftComponent
valueType.c 3KB
common.c 5KB
common.h 3KB
timeStamp.c 3KB
timeStamp.h 503B
valueType.h 1KB
05_UserBoard
printf.c 15KB
user.h 1KB
printf.h 7KB
.mxproject 7KB
.project 1KB
04_GEC
bios_api.c 2KB
uecom.h 12KB
uecom.c 42KB
gec.h 5KB
01_Doc
makefile.txt 9KB
readme.txt 5KB
Debug
makefile 6KB
32.hex 21KB
srcc
flash.c 14KB
printf.c 15KB
valueType.c 3KB
bios_api.c 2KB
common.c 5KB
uart.c 14KB
timeStamp.c 3KB
systick.c 1KB
system_stm32l4xx.c 14KB
gpio.c 15KB
uecom.c 42KB
isr.c 656B
main.c 4KB
srcs
startup_stm32l431rctx.s 12KB
obj
flash.su 447B
timeStamp.o 754KB
common.o 773KB
printf.o 767KB
system_stm32l4xx.su 154B
startup_stm32l431rctx.o 6KB
uecom.su 1KB
bios_api.su 43B
isr.su 36B
timeStamp.su 176B
isr.o 763KB
systick.o 720KB
system_stm32l4xx.o 719KB
printf.su 312B
common.su 360B
main.d 2KB
main.o 764KB
main.su 60B
uart.su 407B
flash.o 754KB
uecom.o 814KB
uart.o 754KB
gpio.o 756KB
valueType.su 128B
systick.su 38B
gpio.su 451B
bios_api.o 747KB
valueType.o 720KB
32.map 124KB
32.lst 110KB
32.elf 814KB
共 90 条
- 1
资源评论
橙汁333
- 粉丝: 30
- 资源: 49
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功