3.定时器方面
这部分由于项目中没有用到,我这里也不敢乱贴以致误导。相信小伙伴们上面的会改了,这个也不是难事,大部分都是修改模式配置的问题。
4.USART.c方面
串口配置首先是GPIO的配置和中断方面的配置,上面已经有方法了。这里的模式配置MS是不需要改的:
F0:
- /* USART1 mode config */
- USART_InitStructure.USART_BaudRate = bps;
- 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;
- USART_Init(RS485_UART, &USART_InitStructure);
- USART_ITConfig(RS485_UART, USART_IT_RXNE, ENABLE);
- USART_Cmd(RS485_UART, ENABLE);
复制代码
F1:
- /* USART1 mode config */
- USART_InitStructure.USART_BaudRate = bps;
- 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;
- USART_Init(RS485_UART, &USART_InitStructure);
- USART_ITConfig(RS485_UART, USART_IT_RXNE, ENABLE);
- USART_Cmd(RS485_UART, ENABLE);
复制代码
嗯....一样一样的。注意这里有个寄存器是不一样的:
就是在接收中断中,有些项目可能需要将这个寄存器重置一下:
F1中为“RS485_UART->SR=0x00;”,SR寄存器,只有16位
而F0中则为“RS485_UART->ISR=0x00C0; ”,ISR寄存器,有32位
这些好像不是必要的,具体的功能可以看一下数据手册里怎么介绍的...似乎是中断接收标志位?
5.中断向量表的重映射
如果你的项目用到了软件bootloader,中断向量表就得重映射,而F1中有函数可以直接用,然后你会发现F0中没有
F1中的函数:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, BSP_ADDR_Boot);
通过查资料得知我们可以用memcpy,将中断向量表拷贝到ram下(F0的中断向量表可以放在RAM中),然后保证存储中断向量表的这部分不会被修改就行了,方法在上面这个网址中。
F0中的函数:
memcpy((void*)0x20000000, (void*)0x08000000, VECTOR_SIZE);
SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
至于JTAG口的复用问题,STM32F0并不存在,可以将相应的函数删掉即可。
|