OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4183|回复: 4

采集串口串口调试助手发来的数据为什么写不到sd卡 麻烦高手们看一下 自己是菜鸟 实在不知道错在哪了

[复制链接]

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
发表于 2015-5-14 19:10:59 | 显示全部楼层 |阅读模式
5金钱
main函数
#include "delay.h"
#include "sys.h"
#include "usart.h" 
#include "MMC_SD.h" 
#include "ff.h" 
#include "led.h" 
//#include "timer.h"
FRESULT res;//??????????·?????
int a,k;
u8 j;
u8 len;
u16 times=0;
FIL fsrc;
FATFS fs;
UINT br,bw;
BYTE buffer[512];
//BYTE textFileBuffer[]="0x05,0x0c,0x0f,0xfe,0xpf,0x77,0x11";
 int main(void)
 {   
NVIC_Configuration();  
delay_init();     //???±??????????  
uart_init(9600); //?®??????????9600
  LED_Init();
  //TIM3_Int_Init(1999,7199); 
         f_mount(&fs,"0:",1); //????SD?¨ 
        while(USART_RX_STA&0x8000)
          { res=f_open(&fsrc,"0:ceshi.TXT",FA_CREATE_NEW|FA_WRITE); 
             if(res==FR_OK)
           {
          f_lseek(&fsrc,fsrc.fsize);
              res=f_write(&fsrc, USART_RX_BUF,sizeof( USART_RX_BUF[USART_RX_STA&0X3FFF])-1,&bw);
            printf("\r\n???????¨????\n");
         // f_lseek(&fsrc, fsrc.fsize);
                    f_close(&fsrc);
            }
 else if(res==FR_EXIST)
  {
     printf("\r\n????????????\r\n");
  }
res = f_open(&fsrc, "0:ceshi.TXT", FA_OPEN_EXISTING | FA_READ);
br=1;
a=0;
for(;;)
{
 for(a=0;a<512;a++)
   buffer[a]=0;
   res = f_read(&fsrc, buffer, sizeof(buffer), &br);
   printf("\r\n %s",buffer);
            if(res||br==0) break;
}
f_close(&fsrc);
LED0=!LED0;//????LED,?á??????????????.
delay_ms(10);   
}
 /* while(1)
    {
  if(USART_RX_STA&0x8000)
  {   
  len=USART_RX_STA&0x3fff;//?????????????????????¤??
  printf("\r\n?ú·???????????:\r\n");
  for(j=0;j<len;j++)
 {
USART1->DR=USART_RX_BUF[j];
while((USART1->SR&0X40)==0);//????·????á??
}
printf("\r\n\r\n");//????????
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\nALIENTEK MiniSTM32??·?°? ?®?????é\r\n");
printf("??????×?@ALIENTEK\r\n\r\n\r\n");
}
if(times%200==0)printf("??????????,???????ü?á??\r\n");  
if(times%30==0)LED0=!LED0;//????LED,?á??????????????.
delay_ms(10);   
}
} */ 
  }
中断函数
#include "sys.h"
#include "usart.h"  
//?????????ú??,?§??printf????,?????è??????use MicroLIB  
#if 1
#pragma import(__use_no_semihosting)             
//±ê×????è?????§??????                 
struct __FILE 

int handle; 

}; 

FILE __stdout;       
//?¨??_sys_exit()??±???????°??÷?ú????    
_sys_exit(int x) 

x = x; 

//???¨??fputc???? 
int fputc(int ch, FILE *f)
{      
while((USART1->SR&0X40)==0);//???··???,?±??·????ê±?   
    USART1->DR = (u8) ch;      
return ch;
}
#endif 

/*????microLib??·?·¨*/
 /* 
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}
   
    return ch;
}
int GetKey (void)  { 

    while (!(USART1->SR & USART_FLAG_RXNE));

    return ((int)(USART1->DR & 0x1FF));
}
*/
 

//?®??1????·??????ò
//×???,????USARTx->SR??±??????????????í?ó  
u8 USART_RX_BUF[USART_REC_LEN];     //????????,×??óUSART_REC_LEN??×???.
//????×???
//bit15?? ?????ê??±ê??
//bit14?? ??????0x0d
//bit13~0?? ???????????§×???????
u16 USART_RX_STA=0;       //????×???±ê??  

//??????IO ?®??1 
//bound:?¨????
void uart_init(u32 bound){
    //GPIO?????è??
    GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //????USART1??GPIOA?±??
  USART_DeInit(USART1);  //?????®??1
//USART1_TX   PA.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì????
    GPIO_Init(GPIOA, &GPIO_InitStructure); //??????PA9
   
    //USART1_RX  A.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//????????
    GPIO_Init(GPIOA, &GPIO_InitStructure);  //??????PA10

   //Usart1 NVIC ????

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//??????????3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //×???????3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??????
NVIC_Init(&NVIC_InitStructure); //?ù?????¨????????????VIC?????÷
  
   //USART ???????è??

USART_InitStructure.USART_BaudRate = bound;//??°??è????9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×??¤??8??????????
USART_InitStructure.USART_StopBits = USART_StopBits_1;//??????????
USART_InitStructure.USART_Parity = USART_Parity_No;//?????????é??
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//???????????÷????
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //??·?????

    USART_Init(USART1, &USART_InitStructure); //???????®??
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//????????
    USART_Cmd(USART1, ENABLE);                    //?????®?? 
}
#if EN_USART1_RX   //??????????????
void USART1_IRQHandler(void)                 //?®??1????·??????ò
{
u8 Res;
#ifdef OS_TICKS_PER_SEC //?????±?????????¨????,???÷??????ucosII??.
OSIntEnter();    
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //????????(????????????±?????0x0d 0x0a?á??)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????

if((USART_RX_STA&0x8000)==0)//???????ê??
{
if(USART_RX_STA&0x4000)//????????0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//?????í?ó,????????
else USART_RX_STA|=0x8000; //?????ê???? 
}
else //????????0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//?????????í?ó,????????????  
}  
}
}    
     } 
#ifdef OS_TICKS_PER_SEC //?????±?????????¨????,???÷??????ucosII??.
OSIntExit();    
#endif

#endif




最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-14 19:11:00 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-5-15 00:00:33 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥 现在在一个兄弟的帮助下 可以连续写了 但写有几分钟 就死机了 写不进sd卡了 不知道怎么回事
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-15 23:36:48 | 显示全部楼层
回复【3楼】wenwu1109:
---------------------------------
这得仿真看看死哪里了。才能慢慢分析
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-10-19
在线时间
2 小时
 楼主| 发表于 2015-5-15 23:52:55 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
好的 原子哥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 11:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表