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嵌入式的啟動文件在程序的哪裡包含
工程設置選項裡面如圖