这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » (SD卡+FATFS,进行中)zangchao ARM DIY进程帖

共92条 8/10 |‹ 5 6 7 8 9 10 跳转至
工程师
2012-05-19 23:43:56     打赏
71楼
换成120的啊,搞吧

工程师
2012-05-20 00:14:23     打赏
72楼
       现在已经实现CAN转USART1的实验了,但目前还是单向通行即:只能是CAN转串,或者串转CAN。下一步将把两部分的代码合在一起,实现真正意义上的CAN转USART1。
       明天把测试效果发上来。

工程师
2012-05-20 00:27:00     打赏
73楼
哈哈,等完全搞定,这个也是我更期待的

工程师
2012-05-20 11:54:53     打赏
74楼
USART转CAN/CAN转USART演示(借用同学申请的板子)

工程师
2012-05-23 17:51:59     打赏
75楼
全双向CAN与USART协议转换视频,清晰版的啊,目前正在调试移植到另外自己做的一个板子上,能小收入一把,嘿嘿

工程师
2012-05-24 00:04:41     打赏
76楼
关于VP230CAN的收发器的斜率电阻配置,上传一张图片,以供设计时参考

工程师
2012-06-07 21:47:36     打赏
77楼
这个与你的CAN的工作波特率有关系,CAN是靠两根总线的电压差来代表数据,要是选用的电阻Rs和波特率对应不好,是无法正常通信的。

工程师
2012-06-14 12:32:03     打赏
78楼
啊,最近忙考试,没有更新帖子,那我这两天整理下更新吧。

工程师
2012-06-15 21:59:51     打赏
79楼

利用TIM产生定时信号,使用起来比较简单,只要完成TIMx的配置,计算好定时时间,就可以使用了,剩余的工作就是应用它了。这里我应用了TIMx中断方式,在其中断服务函数里面添加了LED的翻转语句,这样就可以实现按照TIMx的定时时长来点亮熄灭LED了。由于实验较简单,就不上图上视频了,仅将TIMx的配置函数与中断服务函数贴出来。 
/*-----------------------------------------------------------------------
   tim2    配置

定时时间T计算公式:
*T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=(1999+1)*(35999+1)/72MHz=1s


--------------------------------------------------------------------*/
 void TIME_Config(void)
 {
   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    TIM_DeInit(TIM2);            //复位定时器
    TIM_TimeBaseStructure.TIM_Period=1999;             //定时器初始值
    TIM_TimeBaseStructure.TIM_Prescaler=35999;         //时钟预分频
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;  // 时钟分割
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);   //初始化定时器的值

    TIM_ClearFlag(TIM2,TIM_FLAG_Update);               //清除定时器中断标志
 TIM_ARRPreloadConfig(TIM2, DISABLE);   //禁止预装载,预装载寄存器的内容被立即传送到影子寄存器
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);  //使能中断
    TIM_Cmd(TIM2,ENABLE);            //开启时钟
 }



void TIM2_IRQHandler(void)//定时器中断函数
{//判断是否定时中断
  if ( TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET )
    {
    TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//必须清除中断标志位否则一直中断
 count++;
 if(count%2 == 0)
   GPIO_SetBits(GPIOE ,GPIO_Pin_3);
  else
   GPIO_ResetBits(GPIOE ,GPIO_Pin_3);
    }
}

 


工程师
2012-06-15 22:13:04     打赏
80楼

CRC循环冗余实验是利用STM32内部的CRC校验电路对数组中数进行CRC校验。然后将CRC校验码通过USART1(PA9,PA10)在串口助手上显示出来。


关于代码部分就很简单了,CRC配置部分,只需要打开CRC的时钟就可以了。
void CRC_Config(void)
{
 /* Enable CRC clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
}

主函数部分,就是将数组中的数据送给CRC就可以了
int main(void)
{
  u8 i = 0;

 /* config the sysclock to 72M */     
  RCC_Configuration();

  /* USART1 config */
 USART1_Config();

 /* 使能CRC时钟 */
 CRC_Config();

 printf("\r\n 这是一个 CRC(循环冗余校验)实验 \r\n");

    /* Compute the CRC of "DataBuffer" */
 for(i=0; i<BUFFER_SIZE; i++ )
 {
  CRCValue = CRC_CalcBlockCRC((uint32_t *)DataBuffer, BUFFER_SIZE);
  printf("\r\n32-bit CRC 校验码为:0X%X\r\n", CRCValue);
 }
  printf("\r\nCRC(循环冗余校验)测试成功\r\n");

  while (1)
  {     
  }
}


共92条 8/10 |‹ 5 6 7 8 9 10 跳转至

回复

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