你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3179|回复: 5

【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。

[复制链接]

50

主题

193

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-7-23
发表于 2014-4-16 16:50:50 | 显示全部楼层 |阅读模式
部分关键源代码预览如下,原理图及手板样片随后。
 /*******************************************************************************
* 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[USART2_Tx_ptr_out++];
                /* 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[USART2_Tx_ptr_out++];
                } else {
                    if (USART2_Tx_ptr_out < USART2_Tx_End) { 
                        USART2->DR = USART2_Tx_Buffer[USART2_Tx_ptr_out++];
                    } 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);
}
}
 
工程源代码下载地址:  STM32_USB-FS-Device_Lib_V5.0.0.2.rar (5.45 MB, 下载次数: 125)
回复

使用道具 举报

0

主题

41

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-4-17 15:34:00 | 显示全部楼层

RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。

非常感谢,学习了。
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-4-25 17:09:55 | 显示全部楼层

回复:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。

学习一下,感谢!!!!
回复 支持 反对

使用道具 举报

1

主题

17

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-5-14 09:21:08 | 显示全部楼层

RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。

希望是好东西啊
回复 支持 反对

使用道具 举报

0

主题

15

回帖

0

蝴蝶豆

新手上路

最后登录
2018-6-28
发表于 2014-5-16 07:57:59 | 显示全部楼层

RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。

好樣的~~
回复 支持 反对

使用道具 举报

0

主题

52

回帖

0

蝴蝶豆

高级会员

最后登录
2018-6-20
发表于 2014-5-17 13:06:26 | 显示全部楼层

RE:【原创】【MCU实战经验】+ 利用STM32F103实现的USB-TO-RS485模块产品,源代码及原理图。

赞一个
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版