飞嵌电子

个性签名:飞嵌电子,和你一起从零开始学习STM32单片机!

    1. 中断管理函数: 开发送中断: USART_ITConfig(USARTy, USART_IT_TXE, ENABLE); 开发送中断: USART_ITConfig(USARTy, USART_IT_TXE, DISABLE); 开接收中断: USART_ITConfig(USARTy, USART_IT_RXNE, ENABLE); 关接收中断: USART_ITConfig(USARTy, USART_IT_RXNE, DISABLE);
    2. 中断响应函数:   if(USART_GetITStatus(USARTy, USART_IT_RXNE) != RESET)   {     /* Read one byte from the receive data register */     RxBuffer[RxCounter] = USART_ReceiveData(USARTy);             if(RxBuffer[RxCounter-1] == '\r' && RxBuffer[RxCounter] == '\n')     {       /* 关闭接受中断,开启发送中断 */       USART_ITConfig(USARTy, USART_IT_RXNE, DISABLE);       USART_ITConfig(USARTy, USART_IT_TXE,  ENABLE);     }         RxCounter++;   }      if(USART_GetITStatus(USARTy, USART_IT_TXE) != RESET)   {        /* Write one byte to the transmit data register */         USART_SendData(USARTy,RxBuffer[TxCounter++]);         if(TxCounter == RxCounter)         {                 RxCounter = 0;                 TxCounter = 0;                 /* 关闭接受中断,开启发送中断 */             USART_ITConfig(USARTy, USART_IT_RXNE, ENABLE);             USART_ITConfig(USARTy, USART_IT_TXE,  DISABLE);      }   }
    3. 使用中断方式时,还需要配置中断: NVIC_InitTypeDef NVIC_InitStructure;   /* Enable the USARTz Interrupt */   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   NVIC_Init(&NVIC_InitStructure);
    4. 先介绍查询方式。 发送: void SendByte(uint8_t ch){  USART_SendData(EVAL_COM1, (uint8_t) ch);  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  {}} 接收: uint8_t RecvgByte(void){    while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET)    {}    return USART_ReceiveData(EVAL_COM1);} [ 本帖最后由 飞嵌电子 于 2010-7-5 20:55 编辑 ]
    5. 至此,串口初始化完毕。可以进行数据通信了。通信分三种模式: 查询 中断 DMA(此方式暂时不介绍)
    6. 接下来初始化串口参数: USART_InitStructure.USART_BaudRate = 115200;   USART_InitStructure.USART_WordLength = USART_WordLength_8b;   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;      /* Configure USARTy */   USART_Init(USARTy, &USART_InitStructure);
    7. 时钟使能:   /* Enable GPIO clock */   RCC_APB2PeriphClockCmd(USARTy_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE); #ifndef USE_STM3210C_EVAL   /* Enable USARTy Clock */   RCC_APB2PeriphClockCmd(USARTy_CLK, ENABLE); #else   /* Enable USARTy Clock */   RCC_APB1PeriphClockCmd(USARTy_CLK, ENABLE); #endif 使用DMA方式还需要使能DMA的时钟:   /* DMA clock enable */   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
    8. 串口发送和接收引脚是GPIO的复用,所以串口初始化需要使能响应的GPIO和时钟。 GPIO使能: void GPIO_Configuration(void) {   GPIO_InitTypeDef GPIO_InitStructure; #ifdef USE_STM3210C_EVAL   /* Enable the USART2 Pins Software Remapping */   GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);   #elif defined(USE_STM3210B_EVAL) || defined(USE_STM32100B_EVAL)   /* Enable the USART2 Pins Software Remapping */   GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); #endif   /* Configure USARTy Rx as input floating */   GPIO_InitStructure.GPIO_Pin = USARTy_RxPin;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);      /* Configure USARTy Tx as alternate function push-pull */   GPIO_InitStructure.GPIO_Pin = USARTy_TxPin;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   GPIO_Init(USARTy_GPIO, &GPIO_InitStructure); }
    9. 谢谢您的建议。 补充一下: 这款STM32F107最大的特色是网络接口和USB接口。本学习板在此基础上加了一些常用外设。
    10. 创建工程的视频,刚上传到优酷。现在还不能有链接。稍后链接过来!
    11. 蓝精灵STM32使用的主芯片为STM32F107VCT6, 该芯片是STM32F系列中的互联型产品,该芯片的主要特色如下: ARM 32-bit Cortex™-M3 内核,最高时钟72MHz 单周期乘除指令指令 64K SRAM,266K FLASH 2路16通道12bit ADC 2路12bit DAC 12通道DMA 80个GPIO JTAG & SWD调试模式 CRC校验单元 多达10路定时器,包括2个看门狗定时器,能输出多路PWM,并能够对输入波形采样 通信接口齐全 多达5个USART接口 多达2个I2C接口 多达3个SPI接口 多达2个音频I2S接口 USB 2.0 full-speed device/host/OTG 10/100M自适应网络接口 [ 本帖最后由 飞嵌电子 于 2010-6-24 13:23 编辑 ]
    12. 上传资料 在1楼
    13. 网络上使用DP83848,用于提供物理层支持。提供TCP和UDP与PC通信的例子,并且提供操作说明。 具体的例子有:         实现开发板和PC机之间的网络通信(TCP和UDP)。         可以通过浏览器观察ADC采样、控制LED。         通过tftp协议上传存储在SD卡中的文件,下载文件到SD卡中。         PC机通过ping命令查看开发板和PC的网络链接状态         通过telnet协议实现简单的命令控制
    14. 5V或USB供电BOOT模式可选择64K E2PROM(I2C接口)全部80个GPIO引出,方便用户扩展网络接口USB接口USART接口(RS232电平和TTL)SPI接口CAN接口SD卡接口5路ADC输入接口2路DAC输出接口TFT1.8接口复位、Wakeup, Tamper和用户按键4个LEDRTC,带电池座
    15. 其他内容不断更新中……
    16. 另外,飞嵌电子还将开放该电路板的所有电路图,包括原理图、PCB以及相应的库。开放的电路图包括:         蓝精灵107学习板原理图         蓝精灵107学习板原理图库         蓝精灵107学习板PCB         蓝精灵107学习板PCB库         蓝精灵103学习板原理图         蓝精灵103学习板原理图库         蓝精灵103学习板PCB         蓝精灵103学习板PCB库         JLINK V8 原理图         JLINK V8 固件         JLINK V8 使用说明         TFT1.8 原理图         TFT1.8 原理图库         TFT1.8 PCB         TFT1.8 PCB库
    17. 提供的资料有:         * LwIP            LwIP的基本资料和源代码。另外,还有LwIP在STM32F107上的移植示例和演示说明。         * ucOS            ucOS资料和官方移植程序,以及笔者根据官方例子改写的在本开发板上的例子。         * tft1.8            本开发板使用的1.8寸TFT屏的资料、51演示程序以及例程中用到的图片。         * 资料            STM32的用户手册、固件库手册和数据手册,以及相应的中文版手册。另外还有其他资料。         * 开发工具           附送的开发工具及其使用说明,另外还有图片取模(Iamge2Lcd)、WinHex等软件。         * 固件库           飞嵌电子 AQUA小组根据开发板对官方的固件库修改后的专用固件库以及官方固件库V3.3。         * 其他例程           网上下载的例程。         * 文件系统           efsl文件系统手册和源代码,以及efsl文件系统示例程序所需的SD内容。
    18. 为了帮助大家学习,飞嵌电子提供了很多例程和资料,例程包括: * ADC-DMA   ADC1采集电位器电压,使用DMA方式传送数据。 * CAN loopback   CAN自回路测试程序 * DAC   DAC两路输出分别输出电源电压(VCC)的25%和50% * EXTI   按下KEY2,LED1由亮变灭,再次按下按下KEY2,LED1由灭变亮,如此反复。 * GPIO   流水灯 * I2C   通过I2C总线访问24C64, 在同一地址写入和读出数据两次,如果写入和读出的数据一致,点亮相应的LED(LED1和LED2)。 * I2C-LCD   通过I2C总线访问24C64, 将存在24C64中的图片数据读出,在LCD上显示。由于24C64只有8K的存储空间,所以显示的图片为54*54。 * RTC   实现一个实时时钟,开发板掉电和复位后时钟能够自动恢复。 * SPI + SD   通过SPI读取存储在SD中的图片文件,并显示在LCD上。注意,此程序运行后,SD卡中的文件系统就会丢失。 * UART   开发板和PC进行通信。PC机向开发板发送以'\r''\n'结尾的字符串,开发板将返回相同的字符串。 * SysTick   用SysTick实现1s的延时,从而使LED1以2s为周期闪烁。 * TIM + PWM   利用TIM1产生7路PWM。PWM的频率为:17.57 KHz   四个通道的占空比分别位:     Chanel1:50%         Chanel2:37.5%         Chanel3:25%         Chanel4:12.5%         Chanel[1-3],分别输出2路PWM,Chanel4输出1路PWM * USB + SD卡   通过USB发送和接收存储在SD卡中的数据。 * LwIP         实现开发板和PC机之间的网络通信。         可以通过浏览器观察ADC采样、控制LED。         通过tftp协议上传存储在SD卡中的文件,下载文件到SD卡中。         PC机通过ping命令查看开发板和PC的网络链接状态         通过telnet协议实现简单的命令控制
    19. 本次活动使用我们飞嵌电子开发的蓝精灵107开发板,该开发板主要资源如下: 5V或USB供电 BOOT模式可选择 64K E2PROM(I2C接口) 全部80个GPIO引出,方便用户扩展 网络接口 USB接口 USART接口(RS232电平和TTL) SPI接口 CAN接口 SD卡接口 5路ADC输入接口 2路DAC输出接口 TFT1.8接口 复位、Wakeup, Tamper和用户按键 4个LED RTC,带电池座
    20. 教程的内容如下: 1、STM32F107简介 2、STM32固件库介绍及使用MDK创建工程      视频:https://bbs.eeworld.com.cn/thread-108908-1-2.html 3、使用JLINK调试和下载程序 4、时钟配置(视频教程) 5、GPIO 6、Systick 7、1.8寸TFT 8、RTC 9、DMA 10、定时器 11、PWM驱动步进电机 12、ADC 13、DAC 14、CAN 15、串口(USART) 16、I2C和E2PROM 17、SPI和SD 18、以太网 19、USB 20、uCOS       变成蓝色的部分表示相应的教程已经推出,点击即可进入相应的学习贴学习,下载资料和例程。 [ 本帖最后由 飞嵌电子 于 2010-7-27 18:34 编辑 ]

最近访客

< 1/3 >

统计信息

已有768人来访过

  • 芯积分:--
  • 好友:--
  • 主题:12
  • 回复:25

留言

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


现在还没有留言