先说明,是基于寄存器编程的。
1.从官网下载STM32固件库。我用的是3.5
2.创建一个STM32文件夹(不是存放工程的),存放创建STM32工程所需的基本文件。以后再次创建工程时,只需把这个文件夹的东西拷到相应工程里面即可。
此文件夹里面有CMSIS文件夹和Statup文件夹。
2.找到解压后的Libraries->CMSIS->CoreSupport,把里面的core_cm3.h和core_cm3放进上面的CMSIS文件夹。
找到Libraries->CMSIS->DeviceSupport->ST->STM32F10X->Statup->IAR里面的启动文件,这个启动文件根据STM32具体类型选择,我用的是STM32F103RBT6,所以
选择startup_stm32f10x_md.s,把此文件粘贴到上诉Statup文件夹下。
找到Libraries->CMSIS->DeviceSupport->ST->STM32F10X-下的3个文件,stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h把三个文件添加到上诉CMSIS文件夹 中。
3.用IAR创建一个STM32工程,选择器件型号,选择调试类型等。。。
4.在左边工程目录一栏创建CMSIS和Statup文件夹,然后把第二步骤中的文件夹拷到当前工程目录,然后Add Files,把文件添加到相应目录。并在options里面c/c++ Complier 添加头文件的路径说明。
5.记得在options里面c/c++ Complier的预处理里面的Defined symbols里面添加你使用的STM32类型宏定义STM32F10X_MD,当然根据器件不同有所不同。
补充说明:编译过程中CM3.h报错。几个函数的问题,我用的是IAR6.1,开始不知道什么问题,网上也没有找到解决办法。索性把那报错的几个函数给注释掉了。然后就没有 错误了,编译连接都没有问题了。但是这么做不知道会不会带来什么额外的影响,暂时不管吧。最后写了个点亮LED的程序测试,JLINK下载,都没有问题,至此,基本的环 境就搭成了。
关键字:IAR STM32 工程步骤
引用地址:
IAR中创建STM32工程步骤(寄存器版本)
推荐阅读最新更新时间:2024-03-16 14:51
stm32 dma方式发脉冲做位置控制
考虑到现有板子上没有fpga,对于dma方式发脉冲做位置控制设计如下 两个buff short buff1 ; short buff2 ; 里面都存放频率值,也就是说arp寄存器的值。 数组的长度为1000,是考虑到最高的脉冲频率,如果最大频率比较小,则可以适当减少数组的大小,之所以定义两个buff,是考虑到每个伺服周期计算填充一个buff,同时另一个buff就作为当前dma之用,每个伺服周期结束的时候会停止dma,然后统计已发脉冲数量,然后切换到刚刚填充好的buff,然后启动dma发脉冲。 因为dma发脉冲更新的寄存器是arp,对于ccr脉宽寄存器,则每个伺服周期开始的时候,程序自己填充即可。 上面的dma发送的方法,优点是
[单片机]
STM32的USB键盘及鼠标例程
STM32的USB键盘及鼠标例程通过网络可以搜到很,但是在同一个设备中集成键盘及鼠标的例程却比较少见(我通过GOOGLE只搜到圈圈的基于51+D12的版本)。以下为我参考圈圈的例程做出来的集成键盘及鼠标的STM32的程序。 程序上除了usb_desc.c及usb_endp.c外,其它部份同单一的键盘鼠标一样。下面着重说一下usb_desc.c及usb_endp.c的不同之处。 单一键盘鼠标跟集成键盘鼠标这区别主要是报告描述符不同。单一键盘鼠标的报告描述符因只有一组报告输入/输出,故没有报告ID,而集成的有两组报告(键盘及鼠标),所以每一组报告都有一个报告ID加以区别。 另外就是在usb_endp.c中对端点的数据
[单片机]
IAR平台下使用STM32的DSP配置方法
在工程名上点击鼠标右键选择option 打开后在General Options界面选择 Library Configuration 然后勾选DSP library 然后在函数文件中添加包含对应头文件 include arm_math.h
[单片机]
stm32的串口接收字符串以十六进制数
#include pbdata.h uint8_t TxBuffer1 = USART Interrupt Example: This isUSART1 DEMO ; uint8_t RxBuffer1 ,rec_f,tx_flag; vola ti le uint8_t TxCounter1 = 0x00; volatile uint8_t RxCounter1 = 0x00; uint32_t Rec_Len; int main(void) { u8 a=0; RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration();
[单片机]
STM32中断系统(NVIC和EXTI)
EXTI EXTI (External interrupt) 就是指外部中断,通过 GPIO 检测输入脉冲,引起中断事件,打断原来的代码执行流程,进入到中断服务函数中进行处理,处理完后,再返回到中断之前的代码中执行。 STM32 的所有 GPIO 都可以用作外部中断源的输入端,利用这个特性,我们可以把按键轮询检测 改为由中断 来处理,大大提高软件执行的效率。 Cortex 内核具有强大的异常响应系统,它把能够打断当前代码执行流程的事件分为异常(exception)和中断(interrupt),并把它们用一个表管理起来,编号为 0~15 的称为内核异常,而 16 以上的则称为外部中断(外,相对内核而言),这个表就称为中断向量
[单片机]
MCU,要掀起AI革命了?
昨日,嵌入式界发生了一件大新闻,IAR宣布与Edge Impulse联手为全球客户提供AI与ML整合功能。 可能,很多人对于这个新闻没什么认知。要知道,Keil和IAR作为嵌入式/单片机开发双雄,IAR在全球拥有超过15万开发人员和4.6万家公司,Edge Impulse这家公司的业务,则是MCU巨头纷纷向往的TinyML。 两家联手,意味着,嵌入式领域,即将掀起一场AI革命。想象一下,未来你所使用的咖啡机,都会使用嵌入式视觉和AI,来帮助制作完美的咖啡。 王兆楠、付斌丨作者 电子工程世界(ID:EEworldbbs)丨出品 MCU未来十年市场,靠TinyML Edge Impluse这家公司的名号很多人
[嵌入式]
STM32系统中如何数据掉电保护
在嵌入式设备开发中,往往需要保存一些掉电不易失性的数据,如果系统配置、用户定制信息等等,如果增加额外的ROM IC,比如(基于I2C的24C02等等)往往会造成额外的PCB空间增大,硬件成本增加,降低产品的性价比。如果单从实用性来讲,在stm32的系统中,诸如此类的应用,笔者推荐如下2个方法可以去尝试和借鉴。 基于备份寄存器 原理:对于大容量的MCU系列来说,它有着42个16bit的备份寄存器,而中小容量的微处理器却只有10个16bit的备份寄存器。以STM32F103C8T6为例,42个备份寄存器的地址偏移为:0x04~0x28,0x40~0xBC,共可以存储84个byte数据。备份寄存器是依赖者备份电源的,当外界的VDD掉
[单片机]