undefined 问题:
在看完了例程之后,开始编自己的程序。
但是对照例程中的option 设置。将一切都设置好后还是不能够正常运行。
出现了以下的问题。声明代码没有错误。
Error[Pe020]: identifier "TIM1" is undefined
Changed settings forces a
Building configuration: workstation - Debug
Updating
23 file(s) deleted.
Updating
main.c
stm32f10x_adc.c
Changed settings forces a
Building configuration: workstation - Debug
Updating
23 file(s) deleted.
Updating
main.c
stm32f10x_adc.c
stm32f10x_bkp.c
Error[Pe020]: identifier "EXTI" is undefined
Error[Pe020]: identifier "EXTI" is undefined
Error[Pe020]: identifier "EXTI" is undefined
Error[Pe020]: identifier "EXTI" is undefined
Error[Pe020]: identifier "EXTI" is undefined
Error[Pe020]: identifier "EXTI" is undefined
Error[Pe020]: identifier "EXTI" is undefined
RE:求助 STM 工程组建问题
在Mr.Ma的博客中已经给你回复过了。
第一个错误是说CAN没有被定义就使用了,其他的也类似,这个要出就会出一大堆,因为有
在Mr.Ma的博客中已经给你回复过了。
第一个错误是说CAN没有被定义就使用了,其他的也类似,这个要出就会出一大堆,因为有
多少文件中用到了就会有多少报错。
解决方法就是到工程文件夹下的STM32F10x_CONF.H这个文件,把相应字符宏定义体前面的注释符号去掉就行。
解决方法就是到工程文件夹下的STM32F10x_CONF.H这个文件,把相应字符宏定义体前面的注释符号去掉就行。
∙ 关键字出现“expected a declaration”
RESOLVE: 注意查看是否有main主程序。
∙ declaration is incompatible with previous“delay”
RESOLVE: 声明函数放在主函数之前。
assert_failed学习:
固件函数库通过检查库函书的输入来实现运行时间错误侦测。
通过使用宏assert_param来实现运行时间检测。
所有要求输入参数的函数都使用这个宏。它可以检查输入
参数是否在允许的范围之内。
通过使用宏assert_param来实现运行时间检测。
所有要求输入参数的函数都使用这个宏。它可以检查输入
参数是否在允许的范围之内。
注: 运行时间检查,即宏assert_param应当只在库在Debug模式下
编译时使用。建议在用户应用代码的开发和调试阶段使用
运行时间检查,在最终的代码中去掉它们以改进代码尺寸
和速度。 如果用户仍然希望在最终的代码中保留这项功能,
可以在调用库函数前,重新使用宏assert_param来测试输入参数。*******************************************************************************/
void assert_failed(u8* file, u32 line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */
while (1)
{
}
}
#endif
编译时使用。建议在用户应用代码的开发和调试阶段使用
运行时间检查,在最终的代码中去掉它们以改进代码尺寸
和速度。 如果用户仍然希望在最终的代码中保留这项功能,
可以在调用库函数前,重新使用宏assert_param来测试输入参数。*******************************************************************************/
void assert_failed(u8* file, u32 line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */
while (1)
{
}
}
#endif
∙ STM32F103VB开发板的硬件结构
K1 | PC8 | LED1 | PA15 | |
stm32怎么使用printfK2 | PC7 | LED2 | PC11 | |
K3 | PC6 | LED3 | PC10 | |
K4 | PB15 | LED4 | PC12 | |
不按键为高电平输入 按键为低电平输入 | LED5 | PD2 | ||
LED6 | PD3 | |||
LED7 | PD4 | |||
LED8 | PD5 | |||
∙ 关于位段:
bit_word_adr: 字地址
bit_band_base: 别名区地址的基址
bite_offset*32: 位段中一位存放别名区中的一字(四字节)内容,故位段中的一字节存放了32字节的别名区内容。
bit_number*4: 别名区中一位存放别名区中的一字(四字节)内容。
∙ 关于延时变量:
循环变量一般不要定义成整型(int),最好定义成无符号变量(unsigned int),因为整型里面有符号位。
STM32入门笔记
——从0建立第一个STM32工程,点亮LED。
硬件方面:在万利的EK-STM32F开发板上,与LED相连的是GPIO的PC4~PC7,高电平点亮。对于单片机很熟的朋友很容易就知道点亮LED的方法就是通过PC4~PC7输出高电平。关于这一点没什么好说的。
软件方面:
开发的模式仍然是,编写代码,编译,链接,通过开发工具烧写到Flash这样一个步骤。但是如果一上来就使用ST提供的库文件,就会把自己搞得头大,看不到本质。
1、 STM32的存储器组织
STM32的程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个 4GB的线性地址空间内。 可访问的存储器被分为8个512MB的块。数据字节以小端格式存放在存储器中,也即一个字的最低有效字节被存放在该字的最低地址字节中。
片内集成的Flash、SRAM被映射到如下图所示的地址空间中。
● SRAM:最高达64KB,地址范围0x2000 0000 ~ 0x2000 FFFF
● FLASH:由3个部分组成,Main Block, Information Block。
其中,Main Block用于存放用户程序,最高达512KB,地址范围0x0800 0000 ~ 0x807F FFFF
Information Block又包括System Memory和Option Bytes两个部分。System Memory地址范围0x1FFFF F000 ~ 0X1FFFF F7FF共计2KB,用于存放通过UART1进行ICP编程的BOOTLOADER;Option Bytes包含16个字节,用于(还不知道)
2、 启动(BOOT)配置
细心的朋友一定注意到了上图中的0X0000 0000 --- 0X0007 FFFF这个512KB的地址范围了。它用于什么目的呢?它是STM32上电后,开始执行代码的地址区域。也就是说,STM32上电后,是从0X0000 0000这个地址开始执行代码的。但是,问题在于,这个地址范围既没有FLASH也没有SRAM呀,怎么回事呢?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论