银河娱乐网平台

新闻动态
技术中心
技术中心
当前位置:银河娱乐网平台 >> 服务支持 >> 技术中心 >> 浏览文章
STM32F103xx学习总结
作者:银河娱乐网平台研发部 小杜 日期:2013年03月27日 来源:本站原创 浏览:

内容导读:    STM32F103xx是基于ARM的Cortex-M3处理器,Cortex-M3是最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。    ARM的
    STM32F103xx是基于ARM的Cortex-M3处理器,Cortex-M3是最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。
    ARM的Cortex-M3是32位的RISC处理器,提供额外的代码效率,在通常8 和16位系统的存储空间上发挥了ARM内核的高性能。
    STM32F103xC 、STM32F103xD 和STM32F103xE 增强型系列拥有内置的ARM核心,因此它与所有的ARM工具和软件兼容。
内核
    --ARM 32位的Cortex -M3 CPU
    --最高72MHZ工作频率,在存储器的0的等待周期访问时可达1.25DMisp、MHZ(DhrystONe2.1)
    --单周期乘法和硬件除法
存储器
    --从64K或者128K字节的闪存程序存储器
    --高达20K字节的SRAM
时钟、复位和电源管理
    --2.0-3.6V供电和I/O引脚
    --上电/断电复位(POR/PDR)、可编程电压监测器(PVD)
    --4-16MHZ晶振振荡器
    --内嵌经出厂调教的8MHZ的RC振荡器
    --内嵌带校准的40KMZ的RC振荡器
    --产生CPU时钟的PLL
    --带校准的32KMZ的RC振荡器
低功耗
    --睡眠、停机和待机模式
    --Vbat为RTC和后备寄存器供电
    模数转换器
    --2个12位模数转换器,1us转换时间(多达16个输入通道)
    --转换范围:0至3.6V
    --双采样和保持功能
    --温度传感器
DMA
    --7通道DMA控制器
    --支持的外设:定时器、ADC、SPI、IIC和USRT
    多达80个快速I/O端口
    --26/37/51/80个I/O口,所有I/O口一块映像到16个外部中断;几乎所有的端口均可容忍5V信号
调试模式
    --串行单线调试(SWD)和JTAG接口
多达7个定时器
    --3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入
    --1个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器
    --2个看门狗定时器(独立的和窗口型的)
    --系统时间定时器:24位自减型计数器
多达9个通信接口
    --多达2个I2C接口(支持SMBus/PMBus)
    --多达3个USART接口(支持ISO7816接口,LIN,IrDA接口和调制解调控制)
    --多达2个SPI接口(18M位/秒)
    --CAN接口(2.0B主动)
    --USB 2.0全速接口
    在使用过程中应用J-Link仿真器和IAR for ARM仿真软件进行工程建立和系统仿真。
    在使用过程中学习发现:
    1、芯片的中断口最好接一个下拉电阻,否则当中断管脚悬空时,管脚上的浮空电平很容易使芯片进入中断。
    2、开启串口中断前可以通过读取数据寄存器来清除串口中断标志位。芯片手册上也是这么推荐的。如果直接通过清串口接收中断标志位,然后再开启串口接收中断,则串口出现异常,会不停进中断,但是不是由接收中断引起的。
    3、使用外设时,同时要配置外设对应的IO口,使该IO口的状态符合外设数据传输的需求。如:作为中断,则配置为上拉输入或下拉输入。当该IO口作为中断输入时,同时也能通过读取数据寄存器来读取该IO线上的电平。
    4、中断的使用及具体的操作必须慎之又慎。必须仔细规划,否则不仅程序显得混乱,而且不安全,极易产生错误。
    5、若需要使用外设,首先在RCC里面使能该外设的时钟。然后配置该外设,若用到DMA,首先要使能DMA总线的时钟。若使用到中断,则使能外设的中断,并在NVIC中使能该中断。
    6、采用DMA发送串口数据,当DMA传输完成标志位置位时,内存到串口的数据传输完成,但是串口中还有2个数据未发送,其中一个数据正在发送寄存器发送,另一个数据正在数据寄存器中。所以,不能通过DMA传输完成标志位来作为串口数据发送完成的依据。
    7、有关清除缓冲区域的。在IAR编译器最高级优化的状态下
    for(temp_clean = 0; temp_clean < temp_baochang; temp_clean++)    {
     packet_handler->mingling_buff[temp_clean] = 0;    }
    for(temp_clean = temp_baochang; temp_clean > 0; temp_clean--)    {
     *ptr = 0; //一开始ptr指向packer_handler->mingling_buff    }
    这2者的执行效率相同,每执行1次都需要4句汇编语句(是否每句汇编又需要几条机器指令呢??)。
     for(temp_clean = 0; temp_clean < temp_baochang; temp_clean++)    {        *clean_ptr++ = 0;    }
    而利用这个方式来清除缓冲,编译器会编译成另外一种特殊形式,也许是硬件内部的功能吧。无论缓冲多大(试验了大小为7-50的缓冲),都用了差不多40来句汇编完成了该操作,若将缓冲的数据置为非0的数,则消耗的时间更多。从汇编上看,所有的清除缓冲的方式都调用了这个方法,该方法基本都使用寄存器
上一篇文章:Socket通信原理 下一篇文章:采煤机专用高速通讯的必要性
相关链接
发表评论
用户评论

银河产品

推荐产品

版权所有 山西银河娱乐网平台股份有限公司 晋ICP备09004627号