【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。
部分关键源代码预览如下,原理图及手板样片随后。/*******************************************************************************
* Function Name : USART2_IRQHandler
* Description : This function handles USART2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USART2_IRQHandler(void)
{
if (USART_GetITStatus(USART2, USART_IT_TC) != RESET) {
/* Set DE to low level pin(PA.8) */
GPIOA->BRR = GPIO_Pin_8;
/* Disable the USART2 Transmit Complete interrupt */
USART_ITConfig(USART2, USART_IT_TC, DISABLE);
/* Clear USART2 TC pending bit */
USART_ClearFlag(USART2, USART_FLAG_TC);
}
if (USART_GetITStatus(USART2, USART_IT_TXE) != RESET) {
if(USART2_Tx_length){
if (USART2_Tx_length==1) {
/* Set DE pin to high level pin(PA.8) */
GPIOA->BSRR = GPIO_Pin_8;
USART2->DR = USART2_Tx_Buffer;
/* Enable USART TC interrupt */
USART_ITConfig(USART2, USART_IT_TC, ENABLE);
/* Disable USART TXE interrupt */
USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
} else {
if(USART2_Tx_ptr_out == USART2_Tx_Start){
/* Set DE pin to high level pin(PA.8) */
GPIOA->BSRR = GPIO_Pin_8;
USART2->DR = USART2_Tx_Buffer;
} else {
if (USART2_Tx_ptr_out < USART2_Tx_End) {
USART2->DR = USART2_Tx_Buffer;
} else {
/* Disable USART TXE interrupt */
USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
/* Enable USART TC interrupt */
USART_ITConfig(USART2, USART_IT_TC , ENABLE);
}
}
}
}else{
/* Set DE to low level pin(PA.8) */
GPIOA->BRR = GPIO_Pin_8;
/* Disable USART2 TXE interrupt */
USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
/* Disable USART2 TC interrupt */
USART_ITConfig(USART2, USART_IT_TC , DISABLE);
}
}
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)
{
/* Send the received data to the PC Host*/
USART2_To_USB_Send_Data();
}
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
{
(void)USART_ReceiveData(USART2);
}
}
工程源代码下载地址:
相关原理图下载地址:
实验样品图片1,STM32F103C8T6外扩3路RS485:
实验样品图片2,STM32F103C8T6外扩3路RS485:
图片3,STM32F103C8T6通过RS485(USART2)发送数据的波形(1Mbps通讯):
RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。
非常感谢,学习了。回复:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。
学习一下,感谢!!!!RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。
希望是好东西啊:LRE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。
好樣的~~:D
RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。
赞一个 :D
页:
[1]