ARM技术william hill官网
直播中

yygy3748

12年用户 264经验值
私信 关注
[问答]

如何使用STM32F107的串口4

如何使用STM32F107的串口4???
库里好像只支持到串口3,用串口4就有好多东东没定义了。有啊位大神用过STM32F107的串口4的?因为现在项目要赶进度,所以很急呀,希望看到的兄弟朋友都帮我顶一下。让大神能看到该贴,多谢了

回帖(17)

yygy3748

2012-9-1 08:44:51
原来串口4在库中的定义为UART4
举报

大卫

2012-9-1 12:26:02
回帖拿分  多下点 资料
举报

赵兰宝

2012-10-27 00:26:56
引用: yygy3748 发表于 2012-9-1 08:44
原来串口4在库中的定义为UART4

就算是UART4还是不能收发能指点一下吗?谢谢
举报

yygy3748

2012-10-27 15:06:11
引用: 赵兰宝 发表于 2012-10-27 00:26
就算是UART4还是不能收发能指点一下吗?谢谢

上传你的程序看一下
举报

赵兰宝

2012-10-27 17:39:45
引用: yygy3748 发表于 2012-10-27 15:06
上传你的程序看一下

请帮我看看吧
举报

yygy3748

2012-10-28 11:08:41
引用: 赵兰宝 发表于 2012-10-27 17:39
请帮我看看吧

看你的程序,个人觉得没什么问题啊,你设一下它的从优先级看看。我以前也是这样用的啊。可能有潜在的,我没有看出来,求大神相助啊。
举报

赵兰宝

2012-10-28 20:23:47
引用: yygy3748 发表于 2012-10-28 11:08
看你的程序,个人觉得没什么问题啊,你设一下它的从优先级看看。我以前也是这样用的啊。可能有潜在的,我 ...

你可以给我一个串口4能用的例程吗?我试试你的可以跑起来不可以吗?谢谢
举报

yygy3748

2012-10-29 09:29:42
引用: 赵兰宝 发表于 2012-10-28 20:23
你可以给我一个串口4能用的例程吗?我试试你的可以跑起来不可以吗?谢谢 ...

你的重定向有点问题啊,用下面这个吧,我发一个串口的文件给你,你打开看看,上面的四个串口都是同时在运行的
usart.rar (5.36 KB)
(下载次数: 407, 2012-10-29 09:28 上传)
    有什么不明的看一下上传的文件,如果还有问题再交流



重定向程序

#if 1
//可以在这里写
//#define USARTx 为哪个串口,我用的方法是,当用到哪个串口时,就把哪个串口赋给USARTx
//例如要用到串口4,那就写成
//USARTx =UART4 ;
//不过你得先定义一下USARTx 这个变量,定义为32位的,因为UART4是指向一个32位的地址的,上面的赋值只是把
//UART4指向的地址赋给USARTx 而已,其它串口的使用也是一样的



#pragma import(__use_no_semihosting)   
/******************************************************************************   
*标准库需要的支持函数   
******************************************************************************/   
struct __FILE   
{   
int handle;   
/* Whatever you require here. If the only file you are using is */   
/* standard output using printf() for debugging, no file handling */   
/* is required. */   
};   
/* FILE is typedef’ d in stdio.h. */   
FILE __stdout;  

///    
/// 定义_sys_exit()以避免使用半主机模式   
///
   
///    
///    
_sys_exit(int x)   
{   
x = x;   
}  



int fputc(int ch, FILE *f)  
{
    USARTx->DR = (u8) ch;  

    /* Loop until the end of transmission */  
    while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET)
    {  
    }

    return ch;  
}


/*******************************************************************************
* 函数名   :fgetc
* 输  入   :
* 输  出   :
* 功能说明 :
* 重定义getc函数,这样可以使用scanff函数从串口1输入数据
*******************************************************************************/
int fgetc(FILE *f)
{
/* 等待串口1输入数据 */
while (USART_GetFlagStatus(USARTx, USART_FLAG_RXNE) == RESET);

return (int)USART_ReceiveData(USARTx);
}

#endif

举报

赵兰宝

2012-10-29 09:39:23
引用: yygy3748 发表于 2012-10-29 09:29
你的重定向有点问题啊,用下面这个吧,我发一个串口的文件给你,你打开看看,上面的四个串口都是同时在运 ...

好的,我先试试看,有什么问题我们再探讨,谢谢你。
举报

yygy3748

2012-10-29 10:08:05
引用: 赵兰宝 发表于 2012-10-29 09:39
好的,我先试试看,有什么问题我们再探讨,谢谢你。

不用谢,上面的程序是在我跑裸机的时候用的,我现在才刚刚开始跑系统,也是uCOS II的
举报

赵兰宝

2012-10-29 22:40:35
引用: 赵兰宝 发表于 2012-10-29 09:39
好的,我先试试看,有什么问题我们再探讨,谢谢你。

开始还发了几个数是正确的  只不过中间有些乱数据      但再下进去就程序跑不起来了    可能是哪里还没对
举报

刘军娃

2012-10-30 09:51:39
的但事实上水水水水水水水水水
举报

赵兰宝

2012-10-30 22:15:31
引用: 赵兰宝 发表于 2012-10-29 09:39
好的,我先试试看,有什么问题我们再探讨,谢谢你。

开始串口还发出来了    只是中间有些乱码      又下载了一次程序就又发不出来了
举报

赵兰宝

2012-11-5 20:32:17
串口4收到的数十六进制显示只有53是有效的其他时候都没发数据   结果显示都是00.请大侠指点?
举报
  • UART4收数据.jpg

yygy3748

2012-11-20 18:21:20
引用: 赵兰宝 发表于 2012-11-5 20:32
串口4收到的数十六进制显示只有53是有效的其他时候都没发数据   结果显示都是00.请大侠指点? ...

不好意思啊,最近比较忙,所以没有上来,你可以将波特率降低点用4800看一下
举报

死水波澜

2016-4-5 16:47:06
看看,学习一下!
举报

曹卫东

2016-9-9 13:53:39
正在使用串口4  学习下   谢谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分