头像-181450

zhczlzhang

  • 上海市奉贤区
  • 单片机、嵌入式、电源技术、模拟技术
  • 消费电子

个人成就

获得 2 次赞

帮助过6人

stm8l151k4t6进不去串口接收中断

如题所示,我用stm8l151k4t6发送函数正常,接收就一直 接收不到数据。IAR仿真之后,发现串口接收中断一直进不去。求解。INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler28) { /@@* In order to detect unexpected events during development it is recommended to set a breakpoint on the following instruction. */ //在此增加了LED熄灭函数 USART_ClearITPendingBit (USART1USART_IT_RXNE);//清中断标志 USART_SendData8 (USART1USART_ReceiveData8 (USART1));//将接收到的数据发送出去 } int main{ CLK_PeripheralClockConfig (CLK_Peripheral_USART1ENABLE);//开启USART时钟 USART_Init(USART19600USART_WordLength_8bUSART_StopBits_1USART_Parity_NoUSART_Mode_Tx|USART_Mode_Rx);//设置USART参数9600,8N1,接收/发送 USART_ITConfig (USART1USART_IT_RXNEENABLE);//使能接收中断 USART_Cmd (USART1ENABLE);//使能USART enableInterrupts(); //在这里增加了led点亮函数while(1){};​}

cc2530 Zstack周期性发送时间如何设置5分钟

在使用cc2530 zigbee点播上传18b20温度数据时,程序默认上传时间间隔是3S,修改预编译 SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT 可以改变数据发送间隔  if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )  {    // Send the periodic message    //SampleApp_SendPeriodicMessage();    SampleApp_Send_P2P_Message();    // Setup to send message again in normal period (+ a little jitter)    osal_start_timerEx( SampleApp_TaskID SAMPLEAPP_SEND_PERIODIC_MSG_EVT        (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );    // return unprocessed events    return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);  }osal_start_timerEx 函数里面跳转修改SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT最大值为65000,可以正常隔65S发送数据。因为uint8 osal_start_timerEx( uint8 taskID uint16 event_id uint16 timeout_value )中所有的形参都是uint16 也就是typedef unsigned short  uint16;unsigned short范围是0-65535.此时我想隔5分钟甚至60分钟去发送数据,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT可以填很多,但是osal_start_timerEx第3个形参最大值是65535,所有这个5分钟或60分钟要怎么调呢?我本来是想按照8051中断时间嵌套循环的来改程序,但是我是初次接触zigbee网络,对Zstack协议栈实在不清楚该怎么实现长时间发送数据。目前唯一能做的就是改变osal_start_timerEx形参的定义改成unsigned long类型,这样可以实现unsigned long 0~4294967295也就是大概4294967S发送间隔,理论上是这样,实际我只测试5分钟发送没问题。TEMP:1C85[2021-03-30 01:12:16.224]TEMP:1C22[2021-03-30 01:17:16.395]TEMP:1C22[2021-03-30 01:22:16.595]除此之外还有其它方法吗?求大家指点。

单片机执行完之后不向下执行了【已解决】

如题所示,我的stm32单片机在执行完AliIoT_HTTPsend(); 程序之后,应该向下执行    time_sta = 5;                                     u1_printf("time_sta的值:%d\r\n"time_sta);     u1_printf("发送了数据\r\n");但是通过串口发现,并没有执行,而是一直停在AliIoT_HTTPsend();这里,来回重启之后,还是卡在这里不动,请问如何解决。是什么问题? void AliIoT_HTTPsend(void) { char temp[128]; memset(TXbuff02048); sprintf(&TXbuff[2]"POST /topic%s HTTP/1.1\r\n"HTTP_TOPIC_NAME); memset(temp0128); sprintf(temp"Host:%s\r\n"ServerName); strcat(&TXbuff[2]temp); memset(temp0128); sprintf(temp"password:%s\r\n"Authtoken); strcat(&TXbuff[2]temp); strcat(&TXbuff[2]"Content-Type: application/octet-stream\r\n"); memset(temp0128); sprintf(temp"Content-Length: %d\r\n"Postdata_len); strcat(&TXbuff[2]temp); strcat(&TXbuff[2]"Connection: keep-alive\r\n\r\n"); strcat(&TXbuff[2]Postdata); TXbuff[0] = strlen(&TXbuff[2])/256; TXbuff[1] = strlen(&TXbuff[2])%256; W5500_TxData((unsigned char *)TXbuff); } AliIoT_HTTPsend();一直执行到底,W5500_TxData();执行完成后,出现了“发送数据成功,等待接收... ...”,这表明了W5500_TxData执行完成,但是就是不返回main函数,不向下执行    time_sta = 5;                                     u1_printf("time_sta的值:%d\r\n"time_sta);     u1_printf("发送了数据\r\n");很惆怅,不知道什么情况,求解答?

串口发送0x00变成0x80,0x99变成0x19

如题所示,我通过串口发送unsigned char Read_address[12]={0x680x990x990x990x990x990x990x680x130x000x790x16};//485 结果接受到的变成了68 19 19 19 19 19 19 68 13 80 79 16,0x99变成了0x19,0x00变成80.发送波特率是2400,1,8,偶校验。因为读取仪器内数值,仪器数值在2400,1,8,偶校验的情况下能读出。仪器本身的波特率,校验不能改变。修改过波特率到9600,接受结果无变化,求指点,网上实在没有答案。发送代码如下 if(Uart4_RxCompleted == 1) { for(i=0;i<sizeof(Read_address);i++) { RS485_TX; USART_SendData(UART4 Read_address[i]); while(USART_GetFlagStatus(UART4USART_FLAG_TC)!=SET); RS485_RX; } flag = 1; Uart4_RxCompleted = 0; Uart4_RxCounter = 0; } ​

红外倒车雷达原理详解

最近淘宝买了个红外倒车雷达套件DIY,但是到手之后,发现原理有些搞不懂?请大家指点,有大佬详解一下是更好的。其中555定时与LM324比较电路都是能明白的。比较不能明白的就是红线的地方。这里的LM324为什么要这样运用,9V电源通过r15 30K电阻到HJ接受管,通过47UF到lm324 2 脚,这里我知道是电容是耦合作用,只能通过交流信号,不能通过直流信号。电容为什么是47UF,后面的电阻为什么是47k,20p的电容又有什么作用,为什么选20p。这是的LM324是反相交流放大电路在用还是有源反馈带通滤波再用,如何计算选型。请大家指点一下,这里的运用看的不太明白。

关于限流电阻的计算与选型

兄弟们给支个招,我这边要求12V控制快递柜门锁,门锁是12V,2A培电流,通电时间小于1S,然后我用MOSFET驱动,最大是8A,但是完了才发现,输出的电流没有做限制,如果超出2A有可能击穿电磁锁,想限流加上电阻,但是计算电阻功率是24W,这也太大了。不知道是不是我计算出错,还是那里考虑不周,求大家指点。

推挽电路中关于三极管C极电压的疑问

在最近的学习中,发现一个疑问,但是没有想通,请大家指点下。在此推挽电路中,Q3高电平导通,Q2低电平导通。但是在教程中说,在三极管Q3Q2共B端输入7.5V时,共E端R1附近电压是7V左右。我当时在想共E端为什么是7V,三极管Q3导通后,电流从C流向E,按照我的理解,E端应该是C端流下来的15V,但是我自己实际搭了个电路实测后,发现共E端确实是7V左右。怎么也想不明白这其中的道理!请大家予以解答,难道是因为三极管是电流控制的?

如何从板子上拆卸STM32F407

请教大家,如何把stm32f407从板子上拆下来。stm32f407是144脚的,我焊上去的时候没注意把它焊坏了,现在想要拆卸下来,请教大家如何拆下来。我用了2种方法,一种是马蹄铁型洛铁头,然后在芯片相邻2边上一层薄薄的锡,然后洛铁头开始来回拖动,但是没有用,总是一边融化了,另一边凝固了,怎么都拆不下来。另一种方法是858热吹风枪用圆形去吹。275度,2级风,然后四边来回吹,但是同样的情况出现了,一边融化了,另一边凝固了,芯片太大,没什么用,板子都烫手了,也不见芯片掉下来。用方形头的话,方形头太小,最大也才14*14,没有22*22的。求解,该怎么拆下来。有视频讲解最好。