openmcu890

    1. 迎新年,免费学习开发板啦! http://bbs.openmcu.com/forum.php?mod=viewthread&tid=22#lastpost
    2. 分享STM32F103实现FTP Server的例子 33/16777 stm32/stm8 2017-01-12
      ftp是什么东西
    3. USB的枚举过程,也就是描述符。在usbd_desc.c中,配置了USB的设备描述符。 __ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END =   {     0x12,                       /*bLength */     USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/     0x00,                       /*bcdUSB */     0x02,     0x00,                       /*bDeviceClass*/     0x00,                       /*bDeviceSubClass*/     0x00,                       /*bDeviceProtocol*/     USB_OTG_MAX_EP0_SIZE,      /*bMaxPacketSize*/     LOBYTE(USBD_VID),           /*idVendor*/     HIBYTE(USBD_VID),           /*idVendor*/     LOBYTE(USBD_PID),           /*idVendor*/     HIBYTE(USBD_PID),           /*idVendor*/     0x00,                       /*bcdDevice rel. 2.00*/     0x02,     USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/     USBD_IDX_PRODUCT_STR,       /*Index of product string*/     USBD_IDX_SERIAL_STR,        /*Index of serial number string*/     USBD_CFG_MAX_NUM            /*bNumConfigurations*/   } ; /* USB_DeviceDescriptor */ 在usbd_hid_core.c中,配置了USB的配置描述符,接口描述符以及端点描述符,和HID报告描述符。 __ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END = {   0x09, /* bLength: Configuration Descriptor size */   USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */   USB_HID_CONFIG_DESC_SIZ,   /* wTotalLength: Bytes returned */   0x00,   0x01,         /*bNumInterfaces: 1 interface*/   0x01,         /*bConfigurationValue: Configuration value*/   0x00,         /*iConfiguration: Index of string descriptor describing   the configuration*/   0xE0,         /*bmAttributes: bus powered and Support Remote Wake-up */   0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/   /************** Descriptor of Joystick Mouse interface ****************/   /* 09 */   0x09,         /*bLength: Interface Descriptor size*/   USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/   0x00,         /*bInterfaceNumber: Number of Interface*/   0x00,         /*bAlternateSetting: Alternate setting*/   0x01,         /*bNumEndpoints*/   0x03,         /*bInterfaceClass: HID*/   0x01,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/   0x02,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/   0,            /*iInterface: Index of string descriptor*/   /******************** Descriptor of Joystick Mouse HID ********************/   /* 18 */   0x09,         /*bLength: HID Descriptor size*/   HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/   0x11,         /*bcdHID: HID Class Spec release number*/   0x01,   0x00,         /*bCountryCode: Hardware target country*/   0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/   0x22,         /*bDescriptorType*/   HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/   0x00,   /******************** Descriptor of Mouse endpoint ********************/   /* 27 */   0x07,          /*bLength: Endpoint Descriptor size*/   USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/   HID_IN_EP,     /*bEndpointAddress: Endpoint Address (IN)*/   0x03,          /*bmAttributes: Interrupt endpoint*/   HID_IN_PACKET, /*wMaxPacketSize: 4 Byte max */   0x00,   0x0A,          /*bInterval: Polling Interval (10 ms)*/   /* 34 */ } ; 大家可以对应一楼的看一下。
    4. 不好意思,最近有点事耽误了。没有继续更新。 在对USB的寄存器初始化之后,就是对USB的枚举过程,枚举过程都是通过USB中断完成的,下面可以看USB的中断函数,在stm32fxxx_it.c中,找到USB中断的入口,其中断的原函数是在usb_dcd_int.c中。 uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) {   USB_OTG_GINTSTS_TypeDef  gintr_status;   uint32_t retval = 0;   if (USB_OTG_IsDeviceMode(pdev)) /* ensure that we are in device mode */   {     gintr_status.d32 = USB_OTG_ReadCoreItr(pdev);     if (!gintr_status.d32) /* avoid spurious interrupt */     {       return 0;     }     if (gintr_status.b.outepintr)     {       retval |= DCD_HandleOutEP_ISR(pdev);     }        if (gintr_status.b.inepint)     {       retval |= DCD_HandleInEP_ISR(pdev);     }     if (gintr_status.b.modemismatch)     {       USB_OTG_GINTSTS_TypeDef  gintsts;       /* Clear interrupt */       gintsts.d32 = 0;       gintsts.b.modemismatch = 1;       USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTSTS, gintsts.d32);     }     if (gintr_status.b.wkupintr)     {       retval |= DCD_HandleResume_ISR(pdev);     }     if (gintr_status.b.usbsuspend)     {       retval |= DCD_HandleUSBSuspend_ISR(pdev);     }     if (gintr_status.b.sofintr)     {       retval |= DCD_HandleSof_ISR(pdev);     }     if (gintr_status.b.rxstsqlvl)     {       retval |= DCD_HandleRxStatusQueueLevel_ISR(pdev);     }     if (gintr_status.b.usbreset)     {       retval |= DCD_HandleUsbReset_ISR(pdev);     }     if (gintr_status.b.enumdone)     {       retval |= DCD_HandleEnumDone_ISR(pdev);     }     if (gintr_status.b.incomplisoin)     {       retval |= DCD_IsoINIncomplete_ISR(pdev);     }     if (gintr_status.b.incomplisoout)     {       retval |= DCD_IsoOUTIncomplete_ISR(pdev);     }    #ifdef VBUS_SENSING_ENABLED     if (gintr_status.b.sessreqintr)     {       retval |= DCD_SessionRequest_ISR(pdev);     }     if (gintr_status.b.otgintr)     {       retval |= DCD_OTG_ISR(pdev);     }    #endif      }   return retval; } 通过 gintr_status.d32 = USB_OTG_ReadCoreItr(pdev);这句话读取的是USB的中断标志位,来判断是什么引起的中断,这个我们可以查看USB的中断状态寄存器来了解这些中断源。 同时大家注意gintr_status这是一个共用体,其中两个参数是b和d32,并且其中b的还是一个结构体,里面的变量分别对应了USB中断状态寄存器的对应位。 这里面主要的是注意上面两个中断,一个是USB的输出数据的函数DCD_HandleOutEP_ISR,一个是写入数据的函数DCD_HandleInEP_ISR。
    5. 首先我们从主函数开始分析,主函数中就这一个USB的初始化函数。该函数的第一个参数是关于USB的配置以及寄存器的结构体地址,USB_OTG_FS_CORE_ID说明是全速的USB模式,然后USR_desc是描述符的结构体地址,USBD_HID_cb是关于HID的函数结构体地址,USR_cb是关于USB的一些用户函数的结构体地址。 USBD_Init(&USB_OTG_dev, #ifdef USE_USB_OTG_HS             USB_OTG_HS_CORE_ID, #else                         USB_OTG_FS_CORE_ID, #endif             &USR_desc,             &USBD_HID_cb,             &USR_cb); 在这个初始化函数中,USB_OTG_BSP_Init();函数使能USB的时钟,第二个函数没作用,下面的函数是对USB的寄存器进行配置,以及使能USB的中断。 void USBD_Init(USB_OTG_CORE_HANDLE *pdev,                USB_OTG_CORE_ID_TypeDef coreID,                USBD_DEVICE *pDevice,                                  USBD_Class_cb_TypeDef *class_cb,                USBD_Usr_cb_TypeDef *usr_cb) {   /* Hardware Init */   USB_OTG_BSP_Init(pdev);     USBD_DeInit(pdev);   /*Register class and user callbacks */   pdev->dev.class_cb = class_cb;   pdev->dev.usr_cb = usr_cb;     pdev->dev.usr_device = pDevice;      /* set USB OTG core params */   DCD_Init(pdev , coreID);   /* Upon Init call usr callback */   pdev->dev.usr_cb->Init();   /* Enable Interrupts */   USB_OTG_BSP_EnableInterrupt(pdev); }
    6. 先把使用的例程工程文件传上来
    7. good job Well Done spank:time::time:{:1_103:}
    8. yaffs占内存有多大
    9. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      ngbc88jj 发表于 2016-12-30 14:30 加个好友了解一下你的nxp1768啊,哈哈,nxp系列蛮火的今年
      好的,多支持{:1_124:}
    10. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      lldky88 发表于 2016-12-30 14:27 原理图设计,PCB设计,写驱动楼主,你还有什么资料吗,我想学习哦
      资料有,加好友,请留下邮箱
    11. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      xiaolizi77 发表于 2016-12-30 14:24 写教程啊楼主,希望多多分享nxp资料,视频也行啊
      好的,视频现在不是很多,更新后分享
    12. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      nlly88 发表于 2016-12-30 14:18 我感觉啊板载功能特别多,硬件配置怎么样呢,楼主啊你的开发板有没有原图啊
      硬件稳定,原图有,请留下你的邮箱,方便联系。
    13. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      go2016qq 发表于 2016-12-30 14:11 LPC1768时钟是啥RTC的,稳定不楼主
      稳定,1768,现在工业上很多用M3的,因为它稳定
    14. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      sszztt 发表于 2016-12-30 11:25 NXP1768芯片资源都有些什么东东
      LPC17XX 系列微控制器的外设组件包含高达512KB 的flash 存储器、64KB 的数据存储器、以太网MAC、USB 主机/从机/OTG 接口、8 通道DMA 控制器、4 个UART、2 条CAN 通道、2 个SSP 控制器、SPI 接口、3 个IIC 接口、2 输入和2 输出的IIS 接口、8 通道的12 位ADC、10位DAC、电机控制PWM、正交编码器接口、4 个通用定时器、6 输出的通用PWM、带有独立电池供电的超低功耗RTC 和多达70 个的通用IO 管脚。
    15. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-30
      apple889 发表于 2016-12-30 11:16 发一张图片就了事吗,其他资料呢
      其他资料有啊,现在弄资料挺多的
    16. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-26
      lcofjp 发表于 2016-12-26 12:35 楼主,你分享的这个图,根本就看不清里面的字 欢迎加群:EEWORLD开发板置换 309018200
    17. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-26
      lcofjp 发表于 2016-12-26 12:35 楼主,你分享的这个图,根本就看不清里面的字 欢迎加群:EEWORLD开发板置换 309018200
      原图片有,图片上传到论坛后会有变动。
    18. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-26
      cruelfox 发表于 2016-12-26 13:17 原图应该是能看的,我也发现了这个问题:图片上传论坛以后就被调整宽度了。
      感谢分享,图片上传后,图片可以调整的,有些论坛不行的{:1_124:}
    19. 分享自己整理的LPC1768时钟解析 23/9722 ARM技术 2016-12-26
      cruelfox 发表于 2016-12-26 13:17 原图应该是能看的,我也发现了这个问题:图片上传论坛以后就被调整宽度了。
      感谢分享,图片上传后,图片可以调整的,有些论坛不行的{:1_124:}
    20. 分享基于LPC1768的ucos移植手册 25/6415 微控制器 MCU 2016-12-23
      流年u7 发表于 2016-12-22 09:41 对了,这是什么版本的ucos,ucos_ii还是ucos_iii的?我想要ucos_iii的
      有的,留个邮箱

最近访客

< 1/1 >

统计信息

已有5人来访过

  • 芯积分:--
  • 好友:--
  • 主题:3
  • 回复:34

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言