-
STC8G 串口2无法发送数据
使用官方测试实例,串口2可以i接收数据,发送数据端口检测不到。程序如下: /******************* IO配置函数 *******************/ void GPIO_config(void) { GPIO_InitTypeDef GPIO_InitStructure; //结构定义 GPIO_InitStructure.Pin = GPIO_Pin_1;//GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7 GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP GPIO_Inilize(GPIO_P1,&GPIO_InitStructure); //初始化 } /*************** 串口初始化函数 *****************/ void UART_config(void) { COMx_InitDefine COMx_InitStructure; //结构定义 COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx COMx_InitStructure.UART_BaudRate = 115200ul;//57600ul; //波特率, 110 ~ 115200 COMx_InitStructure.UART_RxEnable = ENABLE; //接收允许, ENABLE或DISABLE COMx_InitStructure.UART_Interrupt = ENABLE; //中断允许, ENABLE或DISABLE COMx_InitStructure.UART_Priority = Priority_0; //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3 COMx_InitStructure.UART_P_SW = UART2_SW_P10_P11;//UART2_SW_P46_P47; //切换端口, UART2_SW_P10_P11,UART2_SW_P46_P47 UART_Configuration(UART2, &COMx_InitStructure); //初始化串口2 UART1,UART2,UART3,UART4 PrintString2("STC8 UART2 Test Programme!\r\n"); //UART2发送一个字符串 } /**********************************************/ void main(void) { u8 i; GPIO_config(); UART_config(); EA = 1; while (1) { delay_ms(1); if(COM2.RX_TimeOut > 0) //超时计数 { if(--COM2.RX_TimeOut == 0) { if(COM2.RX_Cnt > 0) { for(i=0; i
15035浏览量 11回复量 关注量 -
家人们,PIC串口通信的程序出问题了 sos
刚学习PIC单片机的小白,用的dsPIC30f4011,程序是买板子送的,/*********************************************************************/ /*文件说明:uart发送接收*/ /*硬件配置: MCU: DSPIC30F4011, OSC: 使用片外部4M16倍频64MHz振荡器..*/ /*版本: v1.0*/ /*使用说明:P7短路帽连接AN0,P6短路帽连接为AVDD AVSS提供标准电源*/ /*修改记录:*/ /********************************************************************/ #include "p30f4011.h" #include "oled.h" _FOSC(0XC307);//FCKSM = 11;时钟切换禁止 0111=带有16倍频PLL的XT??16倍频PLL使能的XT晶振模式 (晶振频率为4 MHz到10 MHz _FWDT(0X0000);//关狗 _FBORPOR(0X3A3);//MCLREN禁止 欠压2.7V 上电延时64MS _FGS(0X03);// void UART_Init(void); void UART1_TX(unsigned char c); unsigned char UART1_RX(void);//接收数据 unsigned char Data; void System_Init(void)//系统初始化 { OSCCON = 0x33e0;//主振荡器 新振荡器主振荡器 4MHz64分频 PLL锁定(使能) TRISB = 0x0000; } void UART_Init(void) { U1MODE = 0x0000;//8位数据 无奇偶校验 1停止位 U1MODEbits.UARTEN = 1;//使能UART U1STA = 0x0000;//状态和控制寄存器 U1BRG = ((64000000/4/16)/9600)-1;//64MHz波特率9600(按照计算公式) IEC0bits.U1TXIE = 1;//发送中断允许 IPC2bits.U1TXIP = 7;//发送中断优先级7 U1STAbits.UTXEN = 1;// 使能发送 IEC0bits.U1RXIE = 1;//接收中断允许 IPC2bits.U1RXIP = 6;//接收中断优先级6 } void UART1_TX(unsigned char TXData)//发送数据 { while (U1STAbits.UTXBF); U1TXREG = TXData; } unsigned char UART1_RX(void)//接收数据 { unsigned char RXData; while (!U1STAbits.URXDA); RXData = U1RXREG; return RXData; } void Delay_1ms(unsigned int t)//t = 1000大概1s { unsigned int i,j; for(i = 0;i < t;i ++) for(j = 0;j < 100;j ++); } int main() { System_Init(); OLED_Init(); //初始化OLED OLED_Clear(); UART_Init(); disn(4,0,55);disn(5,0,69);disn(6,0,76);disn(7,0,67);disn(8,0,79);disn(9,0,77);disn(10,0,69);//Welcome // disn(1,1,36);disn(2,1,51);disn(3,1,48);disn(4,1,16);disn(5,1,45);disn(6,1,35);disn(7,1,53); while(1) { UART1_TX(UART1_RX()); Data = UART1_RX(); disn(4,1,Data/10000);disn(5,1,Data%10000/1000);disn(6,1,Data%1000/100);disn(7,1,Data%100/10);disn(8,1,Data%10); } } void __attribute__((__interrupt__, auto_psv)) _U1TXInterrupt(void)//发送中断 { IFS0bits.U1TXIF = 0; //清中断标志 } void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void)//接收中断 { IFS0bits.U1RXIF = 0; //清中断标志 } 最后的结果确实好像只能收发一个字节,收到1就能发1,但是收到123465这种一串就会出错,乱显示,如图: [img]https://pic2.zhimg.com/v2-f13e6aed7522dcae449131ab40a4dcfd_hd.png[/img] 请问各位大佬是哪里出错了呀程序,实在是找不到资料,找不到人问了
3452浏览量 0回复量 关注量 -
关于HC32L196串口奇偶校验问题
在配置HC32L196的串口0时,使用了mode 3, 下载视频 关于配置奇偶校验的地方不是很理解, stcCfg.enRunMode = UartMskMode3; ///<模式3 stcCfg.enStopBit = UartMsk1bit; ///<1bit停止位 stcCfg.enMmdorCk = UartMskDataOrAddr; ///< stcCfg.stcBaud.u32Baud = 115200; ///<波特率115200 stcCfg.stcBaud.enClkDiv = UartMsk8Or16Div; ///<通道采样分频配置 stcCfg.stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); ///<获得外设时钟(PCLK)频率值 Uart_Init(M0P_UART0, &stcCfg); ///<串口初始化 UartMskDataOrAddr = 0u, ///<多机模式时,通过读写SBUF[8]决定帧为数据帧或地址帧 UartMskEven = 0x4u, ///<非多机模式偶校验 UartMskOdd = 0x8u, ///<非多机模式奇校验 这三个值,下面两个好理解,奇校验和偶校验, 但是第一个,它是无奇偶校验的意思么? 当我配置为 UartMskDataOrAddr 时 与电脑上的串口调试软件无法正常通讯 有没有人知道这个 UartMskDataOrAddr 是啥意思?
9000浏览量 3回复量 关注量 -
关于GD32F103 uart sos
[font=Tahoma][font=Tahoma][size=10.5pt]我用[/size][/font][/font][font=Tahoma][size=10.5pt]GD32F103 做串口通讯,USART0、USART1、USART2都能正常工作,用同样的初始化程序,UART3、UART4 无法通讯。[/size][/font][align=left]用示波器监视数据线,发现电压值不正确,有知道问题出在哪里的吗?[/align]
3035浏览量 0回复量 关注量 -
【AutoChips MCU】串口重定向修改 sos
请问一下我想将重定向uart2改为uart1应该怎么做呢?用autogen studio生成的vs工程基础上应该怎么改
1930浏览量 0回复量 关注量 -
关于Nano130 M0多串口问题 sos
Nano130 M0 规格书里说芯片共有5个uart口,其中标准uart口两个uart0和uart1。还有三个uart是给Smart card用的,SC0_uart,SC1_uart和 SC2_uart,请问,我能把这三个Smart card用的uart用作通用的uart吗?如何设置?
1136浏览量 0回复量 关注量 -
uart 发送一串数据错乱
hc32f005_ddl_Rev1.9.0 Lite这个库里面的uart例程 我接收多字节 数据错乱 串口使用的是115200 试过9600 也不行 但是1个字节就没问题,这个怎么处理?不能让其他设备也一个一个发送吧
1445浏览量 1回复量 关注量 -
广和通4G模块待机 sos
广和通4G模块按手册上描述有几种使模块待机的方式;主要区分是USB/UART两者控制;目前遇到一个问题:无法待机场景模式: 1. 第一步. host1与4G模块采用USB通信;host2与4G模块采用UART通信; 2. 第二步. host1下电,下电前将USB释放;host2继续采用UART与4G模块通信; 3. 第三部. host2通过UART指令,控制进入待机方式采用IO控制; 最终结果是电流还是很高,应该4G模块应该是没有待机;测量4G模块的USB-DP/DM脚,发现DP还有电压; 另外单独测试模块UART控制休眠,未有USB通信情况下;发送指令以及控制模块待机方式与host2方式一致;电流可以明显看到模块进入待机; 试问是否是因为host1采用了USB,在host1下电之后,即使host1上关闭了USB操作,但4G模块那边的USB资源仍然未释放,导致不待机? 不知道是否有人采用描述中的方式进行测试
1963浏览量 0回复量 关注量 -
ZYNQ7020学UART总线AN3485模块 但串口测试小助手收发显示不出来
按照教学配套的视频操作,视频最后串口发送成功,但我的一点反应没有。使用配套的代码也没反应,我之前也没用过,按着给的照片接的线,不懂是不是接错了?
2930浏览量 2回复量 关注量 -
GD32F103C8T6的Uart与STM32F103C8T6的usart不一样吗?
[i=s] 本帖最后由 13810902190 于 2021-2-8 16:23 编辑 [/i] [backcolor=rgb(222, 240, 251)]我用GD32F103C8T6替换STM32F103C8T6 ,直接pin对pin,按网上提示,修改了修改外部晶振起振超时时间,GD芯片能跑进来,基本功能也正常,但是usart2和3的7816功能不正常,奇怪的是,usart1的7816却正常,三个串口程序里的处理机制和写法都是一样的,请高手指点一下,GD芯片里usart2和usart3的7816功能要设置什么才能正常工作?[/backcolor]
2337浏览量 1回复量 关注量 -
GD32F103C8T6的库与STM32F103C8T6 的库有啥区别?
我用[color=rgb(102, 102, 102)][font=Tahoma, "][size=16px]GD32F103C8T6替换STM32F103C8T6[/size][/font][/color][color=#444444][backcolor=rgb(242, 242, 242)][font=Tahoma, "][size=12px] ,按网上提示,修改了一下flash的时间,芯片能跑进来,基本功能也正常,但是uart2和3的7816功能不正常,奇怪的是,uart1的7816却正常,程序里的处理机制和写法都是一样的,请高手指点一下,GD芯片里uart2和uart3的7816功能要设置什么才能正常工作?[/size][/font][/backcolor][/color]
3460浏览量 2回复量 关注量