stm32单片机可以用Keil5、STM32CubeIDE、IAR等进行编程。
1、Keil MDK:Keil支持目前大多数单片机,Keil根据不同内核单片机,分为几个版本,最常用的就是Keil C51和MDK-ARM。像STC和一些51内核的单片机,一般用KeilC51版本,STM32则用的MDK-ARM。
2、STM32CubeIDE:STM32CubeIDE是ST公司推出的免费多功能STM32开发工具,可以说专门为STM32而生,新增了很多STM32专用功能,比如说外设图形化配置。为工程师大大提高开发效率,降低开发成本。
3、IAR:IAR我是在开发Ti蓝牙产品和基于STM8单片机会用到的。IAR也可以用来开发STM32的程序。通过IAR编译出来的程序比Keil优化得更好,最直接的体现就是编译出来的程序更节约内存空间。和上面Keil类似,IAR同样支持很多单片机,有很多功能基本两者都有。
STM32的介绍:
在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。
内存包括64KB到256KB闪存和20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。
意法半导体(STMicroelectronics)整个集团共有员工近50000名,拥有16个先进的研发机构、39个设计和应用中心、15主要制造厂,并在36个国家设有78个销售办事处。
你都没有给出基准电压。大家也看不出来。
简单的方法,你先测出现在的正弦信号的峰值。
然后把
vu16 Sine16bit[32] = { 0x7FFF,0x98F8,0xB0FB,0xC71C,
0xDA81,0xEA6C,0xF640,0xFD89,
0xFFFE,0xFD89,0xF640,0xEA6C,
0xDA81,0xC71C,0xB0FB,0x98F8,
0x7FFF,0x6706,0x4F03,0x38E2,
0x257D,0x1592,0x09BE,0x0275,
0x0000,0x0275,0x09BE,0x1592,
0x257D,0x38E2,0x4F03,0x6706};
例如你现在的峰值是2V就 把里面的所有数转除以2就可以了。如果峰值是3V就除3
控制继电器这个应该不是太复杂吧,首先得看你的硬件电路怎么接的,一般都是一个三极管做开关,通过高低电平控制三极管的导通与关闭实现继电器的开关与闭合,这里假如用的PB3输出低电平控制继电器闭合则代码如下
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStructGPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructGPIO_Pin = GPIO_Pin_3;
GPIO_InitStructGPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
/输出高电平/
GPIO_SetBits(GPIOB,GPIO_Pin_3);
/控制输出低电平/
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
其他配置要根据你的硬件电路进行配置!
1、为你的bootloader程序选择存储器地址,因为STM32的存储器FLASH存储程序代码空间为512K,需要进行划分。2、如果需要使用JTAG在线调试,则需要配置区域:3、为您的用户程序选择合适的存储空间:同时配置在线调试区域:4、bootloader程序编写基本流程如下:)检测有无需要更新的标志,用户可自定义。比如说读取flash某位置存储的字节作为标志位。2)如需更新,则调用STM32的FLASH程序擦鞋用户代码部分。3)将新的bin文件(即2进制文件直接烧写进去,需要将keil生成的hex文件转换为bin文件,然后存储到外扩展的flash中)写入到STM32自带的FLASH中去,记住需要与上述设置的用户代码存储区一致。4)更新成功后再跳转至用户程序。5、用户程序需要注意一点,需要在程序运行前重新设置中断向量表,即:NVIC_SetVectorTable()。6、用STM32自带的烧录软件进行烧录时,需要修改项目如下:1)打开安装后目标文件中的map文件夹,我们所用的STM32为512Kflash,所以选取STM32_High-density_512KSTmap,将其分解为两个STmap文件(此文件可用记事本 打开)STmap文件中,扇区是以每2K为一page来显示的,所以boot区我们只需要到page7,用户区我们需要page8到最后。修改完成后再次打开此软件会发现多出了两个flash选项,可以根据此处来选择需要存储的代码区。然后还有一处需要修改
用两个定时器分别对两个LED灯闪烁,KEY1和KEY2要设置为外部中断输入,当进入中断时KEY1_DANG或KEY2_DANG指向下一个档位,并且发送串口。给你提供点思路。
void main()
{
while(1)
{
if(key1_dang==0x01)
中断定时1设置为02秒
if(key1_dang==0x02)
中断定时1设置为04秒
if(key1_dang==0x03)
中断定时1设置为06秒
if(key1_dang==0x04)
中断定时1设置为08秒
if(key1_dang==0x05)
中断定时1设置为10秒
if(key2_dang==0x01)
中断定时2设置为02秒
if(key2_dang==0x02)
中断定时2设置为04秒
if(key2_dang==0x03)
中断定时2设置为06秒
if(key2_dang==0x04)
中断定时2设置为08秒
if(key2_dang==0x05)
中断定时2设置为10秒
}
}
别人写的你参考一下:半年前接触STM32,刚开始MCU用的32F1,库用的标准外设库35,写过一些简单的东西。再后来发现ST还有一个软件叫做STM32CUBEMX,可以自动的生成初始化程序,对于我这个32新手来说无疑是天降福音!终于不用为繁琐的配置而苦恼了(其实就是自己对各项配置不熟,而且没有自己积累的程序可以CtrlC+CtrlV)。虽然CUBE用的是ST新出的HAL库,与以前的标准外设库完全不兼容,甚至基本的I/O *** 作都变了,会让习惯了标准外设库的人很苦恼。但是我对标准外设库也不是很熟,而且CUBE的界面化设计真的让配置工程变得很方便,再加上它还有一个类似于FPGA的引脚分配界面,让资源分配,PCB布局布线也方便了不少,于是我选择了用CUBE,用HAL库。很早就开始的写32的朋友有不少,他们也试过HAL库,可最后无一例外都选择了继续使用标准外设库。他们表示完全不习惯HAL库,另外HAL库不太好,毕竟是自动生成的配置,没有自己手动配置的来得熟悉来得透彻,谁知道软件是怎么给你配置的工程。另外CUBE就是给那些不会写32的人用的(ST的官方的说法似乎也是HAL是为了方便做嵌入式相关且对底层不熟的人设计的,但想不通他为何要把两个库做得不兼容)。前面一直在画PCB,调PCB,做机械之类的,没有写程序。最近又开始写32,现在用的MCU是32F4,库是HAL/F4库160。可是我发现我连GPIO的上拉输出都实现不了,无论如何I/O始终默认输出低电平( *** 作I/O可以实现电平跳变),这个问题我昨天查了一天,从库到最底层的寄存器都看了,可没发现什么问题。周围用HAL库的就我一个。。。有些无奈了,难道HAL库真有什么问题吗?如果真有这么明显的问题,ST官方肯定早就发现了。已经下好了标准外设库,打算换标准外设库,工程从头到尾都自己配置,这样出了问题也更方便找。可是我始终有一点想不明白,既然ST官方在推HAL库,那肯定也有他的道理,我们也应该勇于接受新事物,为何身边的朋友却都不愿意接纳HAL库。
以上就是关于stm32用什么软件编程全部的内容,包括:stm32用什么软件编程、求助STM32的程序问题、求一个STM32 单片机控制 继电器的 相关教程, 例子程序也行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)