A. stm32里的启动文件启动文件的作用是什么具体实现了哪些功能
分配异常向量表,初始化一些信息等,初学者可以不用深入理解。
STM32技术博客:
http://blog.csdn.net/ybhuangfugui
Keil系列教程:
http://blog.csdn.net/column/details/13472.html
B. stm32小容量,中容量和大容量产 在选择启动文件时该怎么选
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
cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH大于128 hd(High Density )是大容量,
C. 请问这几个启动文件有什么区别
cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH大于128
D. stm32启动文件在哪个目录
放在哪个目录都可以,只要把它包含进去就行。不过库函数的启动文件在Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar里。
不同芯回片的启动文件不答一样,但是一个系列的一样,比如STM32F0的都一样,F10x的都一样。
我现在用的是F0,在Libraries\CMSIS\ST\STM32F0xx\Source\Templates\iar里
E. STM32F103RC的启动文件应该选哪个
下面贴的是主函数,做的就是将串口1进行配置,配置成中断的方式然后while 1
int main(void)
{
/* System Clocks Configuration */
RCC_Configuration();
/* NVIC configuration */
NVIC_Configuration();
/* Configure the GPIO ports */
GPIO_Configuration();
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
/* Configure USART1 */
USART_Init(USART1, &USART_InitStructure);
/* Enable USART1 Receive and Transmit interrupts */
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
/* Enable the USART1 */
USART_Cmd(USART1, ENABLE);
while (1)
{
}
}
RCC的配置如下
void RCC_Configuration(void)
{
SystemInit();
/* Enable USART1, GPIOA, GPIOx and AFIO clocks */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
}
串口1是PA9 PA10所以要打开 RCC_APB2Periph_GPIOA
用到串口1要打开RCC_APB2Periph_USART1
串口1是复用功能要打开RCC_APB2Periph_AFIO
GPIO的设置
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure USART1 Rx (PA.10) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART1 Tx (PA.09) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
只用到串口1 配置 PA9为输入因为是串口收 PA10为输出因为是串口发送
中断的配置
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
串口中断的函数编写 stm32f10x_it.c文件中
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
/* Read one byte from the receive data register */
RxBuffer1[0] = USART_ReceiveData(USART1);
if(USART_GetITStatus(USART1, USART_IT_TXE) == RESET)
{
USART_SendData(USART1, RxBuffer1[0]);
}
}
这里做了一个读一个data然后将这个data发送出去。即收到什么发送什么。
测试时可以将stm32通过TTL转232芯片连在电脑上,电脑端打开串口工具进行发送一个data的测试。看看是否可以收回这个相同的data。
F. STM32F103ZET6用哪个启动文件
使用ST提供的库文件中的启动文件即可,名字为“startup_stm32f10x_hd.s”,路径为:STM32F10x_StdPeriph_Lib_V3.3.0\Libraries\CMSIS\CM\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd.s
G. stm32中keil怎么加载STM32F10x.s启动文件keil界面哪里加载STM32F10x.s
没太看懂,是不是要使用STM32库建立keil_工程啊,这个会了就可以用了。
H. stm32嵌入式的启动文件在程序的哪里包含
工程设置选项里面如图