这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 静默 ARM DIY进程帖

共9条 1/1 1 跳转至

静默 ARM DIY进程帖

高工
2012-03-31 23:15:05     打赏
串口实现转发字符串-----------------8楼


昨天焊了主芯片,今天又林林总总的焊接了,除了DS18B20,SD卡和SRAM暂时没有,剩下的都东拼西凑的焊上了。
-----------------
主芯片

----------------------- 
半成品

----------------------------------------
中午飯點的時候,著急了,把擴展模塊全部焊成插針了,
串口那也沒注意公母之分,發給我的兩個都是公的,
結果我就直接焊接上去了

--------------------------------------------------
下午看圖,上論壇后悲催的發現錯了,拆,重新焊.....



這是最終的圖片
---------------------------------------------------

這是晚上上電,隨便下載一個程序進去的效果。
===========================================
一點要仔細點,不要想當然,要不返工可費時間了。。。



关键词: 静默     进程    

高工
2012-03-31 23:56:16     打赏
2楼
剛才有個現象:
        供電用的一個電源,JLINK插電腦上,不是一個插板,我隨便下載了一個其他板子上的例程,(當然,下載完畢后,沒啥現象了,呵呵)剛好手碰到了板子上的led指示燈,結果led閃了一下,我就摸了摸,(...)有出來了,摸的狠點,亮度更大,把腳抬離地面,led微微發亮,明顯變暗,把腳放下后,又跟原來差不多亮了,
請問:這是神馬原因?誰來給個合理的解釋

工程师
2012-04-01 00:38:53     打赏
3楼
楼主怎么现在21世纪了还用繁体字啊!不过写的还可以,做硬件一定要细心。

专家
2012-04-01 09:14:03     打赏
4楼
可以实现已经焊接的功能!

院士
2012-04-01 10:10:21     打赏
5楼
LED引脚虚连了吧??

手上有静电,感应电等,导致LED亮度变化

菜鸟
2012-04-01 11:32:33     打赏
6楼
请问smaj5.0a和smbj5.0ca能不能互相代替啊?

高工
2012-04-12 11:45:26     打赏
7楼
觉得当时是浮地,供电用的不是一个插排,
地之间存在电势差,(以前听老师说过,电脑带电,有好大的电压)
以上只是猜测

高工
2012-04-12 12:05:47     打赏
8楼


串口实现转发的效果图
----------------------------------------------------------------------------------------------------------------------
(中断接收数据,查询发送字符串)这个代码折腾了我一天多。。。。一直不出结果,出结果了也是乱序。仿真半天也没注意到这个小问题,只关注了关键性代码和语法问题,没有注意到这个细节。
昨天一直纠结于上图中注释部分的for循环与下面while循环实现(因为用for可以实现,但while不可以)今天上午还专门研究了这段代码的反汇编,最终才在别人帮助下发现问题所在因为上图中的发送字符串函数中的变量i没有初始化,导致指针不知道指哪儿去了,

高工
2012-04-12 12:08:52     打赏
9楼

关键代码如下: 
/*                 STM32向串口1发送1字节                            */
u8 Uart1SendByte(u8 ch)
{
  USART_SendData(USART1,ch);
  while ( USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET)
  {
  }
  return ch;
}
/*                 STM32向串口1发送1字符串                           */
void Uart1SendString(u8 *pStr)
{
  u16 i = 0;

//  for ( i = 0;; i++)
//  {
//     if ( *(pStr + i) != '\0')
//  {
//      Uart1SendByte(*(pStr+i));
//  }
//  else
//  {
//      break;
//  }
//  }
  while(*(pStr + i) != '\0')
  {
   Uart1SendByte(*(pStr + i));
 i++; 
  }
}
/**
  * @brief  This function handles USART1 exception.
  * @param  None
  * @retval None
  */
void USART1_IRQHandler(void)
{
 static u8 j = 0;
 if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)
 {
  USART_ClearITPendingBit(USART1,   USART_IT_RXNE);       //清除中断标志
  Buffer = USART_ReceiveData(USART1);
  *(pStr + j) =Buffer;
  j++;

  if(Buffer == '\n')
  {
   *(pStr + j) ='\0';
   Flag = 1;
   j =0;
  }
  

 }
}


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]