一、硬件设计
相同网络标号表示它们是连接在一起的,因此 DS0、DS1 发光二极管阴极是连接在 STM32 的 PB5、PE5 管脚上。
如果要使 DS0 指示灯亮,只需要控制 PB5 管脚输出低电平,如果要使 DS0 指示灯灭,只需控制 PB5 输出高电平。对于其他的 LED 控制方法一样。如果使用的是其他板子,连接 LED 的管脚和极性不一样,那么只需要在程序中修改对应的 GPIO 管脚和输出电平状态即可,原理是一样的。
点亮 DS0 发光二极管,即让 STM32 的 PB5 管脚输出一个低电平。
二、软件设计
2.1、 startup_stm32f10x_hd.s 启动文件
启动文件里边是使用汇编语言写好了基本程序,当 STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境。因此称为启动文件。该文件使用的汇编指令是 Cortex-M3 内核支持的指令,可参考《Cortex-M3 权威指南中文》内指令集章节。
startup_stm32f10x_nd.s 文件(普中STM32F10x教程里面的名称)是由 ST 官方提供的,一般有需要也是在官方的基础上修改,不会自己完全重写。该文件可以从 KEIL5 安装目录找到,也可以从 ST 库里面找到,找到该文件后把启动文件添加到工程里面即可。不同型号的芯片以及不同编译环境下使用的汇编文件是不一样的,但功能相同。
启动文件的主要功能
初始化堆栈指针 SP。
初始化程序计数器指针 PC。
设置堆、栈的大小。
设置中断向量表的入口地址。
配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没有外部 SRAM)。
调用 SystemInit() 函数配置 STM32 的系统时钟。
设置 C 库的分支入口“ __main”(最终用来调用 main 函数) 。
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
128 行的是程序注释,在汇编里面注释用的是“;”,相当于 C 语言的“ //”注释符。
129行是定义了一个子程序: Reset_Handler。 PROC 是子程序定义伪指令。这里就相当于 C 语言里定义了一个函数,函数名为 Reset_Handler。
130行 EXPORT 表示 Reset_Handler 这个子程序可供其他模块调用。 相当于 C 语言的函数声明。关键字[WEAK] 表示弱定义,如果编译器发现在别处定义了同名的函数,则在链接时用别处的地址进行链接,如果其它地方没有定义,编译器也不报错,以此处地址进行链接,如果不理解 WEAK,那就忽略它好了。
131行和132行 IMPORT 说明 __main 和 SystemInit 这两个标号在其他文件,在链接的时候需要到其他文件去寻找。相当于 C 语言中,从其它文件引入函数声明。以便下面对外部函数进行调用。
SystemInit 需要由我们自己实现,即我们要编写一个具有该名称的函数,用来初始化 STM32 芯片的时钟,一般包括初始化 AHB、 APB 等各总线的时钟,需要经过一系列的配置 STM32 才能达到稳定运行的状态。__main 其实不是我们定义的(不要与 C 语言中的 main 函数混淆),当编译器编译时,只要遇到这个标号就会定义这个函数,该函数的主要功能是:负责初始化栈、堆,配置系统环境,准备好 C 语言并在最后跳转到用户自定义的 main 函数,从此来到 C 的世界。
133行把 SystemInit 的地址加载到寄存器 R0。
134行程序跳转到 R0 中的地址执行程序,即执行 SystemInit 函数的内容。
135 行把__main 的地址加载到寄存器 R0。
136 行程序跳转到 R0 中的地址执行程序,即执行__main 函数,执行完毕之后即可进入 main 函数。
137 行表示子程序的结束。
结论:我们需要在外部定义一个SystemInit 函数设置 STM32 的时钟;STM32 上电后,会执行 SystemInit 函数,最后执行我们 C 语言中的 main 函数。
2.1.1、startup_stm32f10x_md.s启动文件
;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
;* File Name : startup_stm32f10x_md.s
;* Author : MCD Application Team
;* Version : V3.5.0
;* Date : 11-March-2011
;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM
;* toolchain.
;* This module performs:
;* - Set the initial SP
;* - Set the initial PC == Reset_Handler
;* - Set the vector table entries with the exceptions ISR address
;* - Configure the clock system
;* - Branches to __main in the C library (which eventually
;* calls main()).
;* After Reset the CortexM3 processor is in Thread mode,
;* priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>
;*******************************************************************************
; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
;*******************************************************************************
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; ; ;
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; ; ;
Heap_Size EQU 0x00000800
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window Watchdog
DCD PVD_IRQHandler ; PVD through EXTI Line detect
DCD TAMPER_IRQHandler ; Tamper
DCD RTC_IRQHandler ; RTC
DCD FLASH_IRQHandler ; Flash
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line 0
DCD EXTI1_IRQHandler ; EXTI Line 1
DCD EXTI2_IRQHandler ; EXTI Line 2
推荐阅读
史海拾趣
为了进一步扩大市场覆盖和品牌影响力,福斯特半导体积极寻求战略合作。2023年2月,福斯特半导体与世强先进(深圳)科技股份有限公司签署授权代理协议,借助世强先进在技术分销和互联网推广方面的丰富经验,布局线上和线下功率器件渠道市场。这一合作不仅拓宽了福斯特半导体的产品应用领域,还提升了公司在新能源汽车、储能、照明等市场的知名度。通过世强硬创平台,福斯特半导体的功率MOS和二极管等产品得以快速覆盖目标市场,进一步降低了客户供应链成本。
为了进一步扩大业务规模,提升研发实力,芯邦科技于2023年成功在上交所科创板上市,并计划募资6亿元用于投建移动存储控制芯片等项目。这一举措不仅为芯邦提供了更多的资金支持,也为其未来的发展奠定了坚实的基础。
Freqtech Ohg公司深知人才是企业发展的第一资源。因此,公司高度重视人才培养和团队建设工作。公司建立了完善的人才培养体系,通过内部培训、外部引进等多种方式,不断提升员工的专业技能和综合素质。同时,Freqtech还注重营造积极向上的企业文化氛围,激发员工的创新精神和团队合作精神。这些努力使得Freqtech拥有一支高素质、专业化的研发团队和管理团队,为公司的持续健康发展提供了有力的人才保障。
需要注意的是,以上故事均为虚构内容,旨在反映电子行业公司可能经历的发展路径和面临的挑战与机遇。对于Freqtech Ohg公司的具体情况,建议直接查阅其官方网站或相关权威报道以获取准确信息。
港源公司在国内外市场的拓展上取得了显著成就。公司在全国设有多个销售公司和分支机构,并在国外如日本、韩国、马来西亚、巴西等地设立了分公司和销售总代理,形成了完善的销售网络。这种全球化布局不仅使港源公司能够更好地服务全球客户,还为公司带来了更多的国际合作机会和市场资源。通过参加国际展览会等方式,港源公司全方位地展示了自身的研发、制造、销售和服务实力,进一步提升了品牌知名度和市场影响力。
在追求经济效益的同时,Cantec Electronic Co Ltd也积极履行社会责任,坚持绿色发展理念。公司投入大量资金进行环保设施的建设和改造,确保生产过程中的废弃物得到有效处理。同时,公司还积极研发环保型电子产品,推动整个行业的绿色转型。这一举措不仅提升了公司的社会形象,也为公司的可持续发展提供了有力保障。
Cantec Electronic Co Ltd一直注重企业文化的建设。公司倡导“创新、协作、务实、高效”的企业精神,鼓励员工勇于创新、敢于担当。同时,公司还注重员工的培训和成长,为员工提供广阔的发展空间和良好的职业晋升通道。这种积极向上的企业文化吸引了大量优秀人才的加入,为公司的快速发展提供了强大的人才支撑。
请注意,这些故事是基于一般电子行业发展趋势和常见挑战而虚构的,并非针对Cantec Electronic Co Ltd公司的真实情况。如果您需要了解该公司的发展故事,建议您查阅相关资料或联系公司进行咨询。
小弟现在搞通讯设备,,需要电话线路发送反极信号,但是电信局不给开,现有市场上的反极信号发生器没有检测被叫是否通话完毕挂机的功能,现在小弟高价求方案,或是成品。… 查看全部问答∨ |
TI公司的高速数字信号处理器TMS320C6000系列DSP支持并行处理,采用甚长指令字(VLIW)体系结构,内部设置有8个功能单元(两个乘法器和6个ALU),8个功能单元可并行操作,最多可以在一个周期内同时执行八条32位指令。指令操作为“流水线”工作方式。应用 ...… 查看全部问答∨ |
本帖最后由 paulhyde 于 2014-9-15 09:24 编辑 国赛第一天,心得很多呀!参加比赛要有前瞻性眼光,保持心态------塞翁失马焉知非福。。。想做什么就去做吧,不要给自己留下遗憾! … 查看全部问答∨ |
摘要:本文设计了一个基于Intel PXA270的硬件平台及嵌入式Linux的软件平台进行无线视频采集的系统。实现了在嵌 入式LINUX中进行Ⅵ也下的视频采集以及MPEG-4编码和无线传输的功能,可以用于视频监控、口电话、视频会议等领域。… 查看全部问答∨ |
从元器件角度看,GPS设备包含的关键元器件有七个,分别是天线、低噪音放大器(LNA)、RF接收转换(RF Section)、数字基带(Digital Baseband)、微处理器(Microprocessor)、微处理器周边外设(Processor Peripherals)、输入输出和驱动(I/O and Driver)。 ...… 查看全部问答∨ |
大家好: 小弟画了一块板子,现在PCB布线已经搞好,就差覆铜了,不规则覆铜,就是在顶层需要覆铜的地方才覆,不需覆铜的地方不覆,这样板子上覆铜的边缘就不是直线了,请问怎样实现不规则的覆铜,怎样设置,如何操作才能达到效果! ...… 查看全部问答∨ |
char send_AT[]="at\\r"; 我把这个字符串用单片机发送出去(我调试过单片机能发送到电脑),这样说明发出数据没问题; 但是我把单片机和TC35i连接,让单片机发送给他就是没反应; 能不能说下是什么原因… 查看全部问答∨ |
|
请问各位高手,我在用MSP430F133单片机实现AD转换的时候,测量输入电压后,程序显示的转换的结果与采用公式计算的结果不符,并且在不同的输入电压下,AD转换的结果并非线性关系,请教各位高手原因在那,以下是我写的程序:(系统采用内部2.5伏参考电 ...… 查看全部问答∨ |