找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1952|回复: 20
收起左侧

从51单片机过渡到stm32,使尽浑身解数点不亮一个Led灯

  [复制链接]
ID:608154 发表于 2022-1-27 23:00 来自手机 | 显示全部楼层 |阅读模式
从51过渡到stm32,网上拚命收集资源,keil官网下载了MDK536,又下载了stm32f0xx和f1xx芯片包,没板去街边修车店捡个控制器回来,拆开看是f030c6t6,那就从这个开始,于是网上找啊找,找到了大牛(青风)的点灯例程,用mdk536打开几十个error,库函数版本的根本不知道错在哪个地方,更别提改错了。
回复

使用道具 举报

ID:608154 发表于 2022-1-27 23:11 来自手机 | 显示全部楼层
本帖最后由 吴作和 于 2022-1-28 18:51 编辑

不甘心就这么放弃,于是又继续找,找到了原子点灯例程,编译零错误零警告通过,但是一看:mcu是f103zet6,但是我的是f030c6t6,还是无法硬件下载,只好继续寻找,又找到一个资源,就是<<stm32从入门到精通>>中的最简单的点灯例子,不需要用一个库函数,也不需要导入一个h文件,赶紧复制粘贴到工程中来,进行编译又是一个错误,并且错误位置都没有提示,
回复

使用道具 举报

ID:608154 发表于 2022-1-27 23:17 来自手机 | 显示全部楼层
继续折腾,折腾到下载cubeMX,图型化创建了一个点灯工程,用MDK5打开后继续编译,还是有一个错误,定位到错误之处也看不懂,就这样折腾了五六天,最后只能放弃stm32返回到c51了
回复

使用道具 举报

ID:766450 发表于 2022-1-28 08:40 | 显示全部楼层
其实主要还是你的编程基础,模块化编译的问题
回复

使用道具 举报

ID:8222 发表于 2022-1-28 10:02 | 显示全部楼层
我的水平只能玩玩STM8,业余玩玩,感觉STM32太深奥了。
回复

使用道具 举报

ID:973741 发表于 2022-1-28 11:09 | 显示全部楼层
完全寄存器方式的 ,和51的几乎一样,输出pc13,不合适自己改一下

STM030TEST.rar

496.67 KB, 下载次数: 7

回复

使用道具 举报

ID:973741 发表于 2022-1-28 11:20 | 显示全部楼层
#include "stm32f0xx.h"
#include "stdint.h"
#include "stdbool.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
       
void delay(u16 x)
  {
        long b;
   for(b=0;b<(x*2400);b++);   
  }

void RCC_Init(void)
{   
  RCC->CFGR=0x0;
        RCC->CR |=0X01;//开启HSI
        while((RCC->CR&0x02)!=0x02);//HSI稳定
        RCC->CFGR |=1<<20;//PPL*6
        RCC->CFGR &=0xffffff0f;//AHB不分频
        RCC->CFGR &=0xfffff8ff;//PREDIV不分频
        RCC->CFGR |=0x00008000; //HSI作为PPL输入
        FLASH->ACR=0X32;
        RCC->CR |=1<<24;//开启PPL
        while((RCC->CR & 0x02000000)!=0x02000000);//等待PPL稳定
  RCC->CFGR |=0x02;  //时钟切换到PPL
        while((RCC->CFGR & 0x0c)!=0x8);//系统时钟已经切换到PPL
}       

void GPIO_Init(void)
{
   RCC->AHBENR |= 1<<19; //开启GPIOC时钟
   GPIOC->MODER |= 1<<26;  //PC13通用输出
   GPIOC->OTYPER |= 1<<13;  //PC13开漏输出
         GPIOC->OSPEEDR |= 3<<26; //PC13高速输出   
}
int main()
{         
        RCC_Init() ;
        GPIO_Init();
       
  while(1)
  {
               
        delay(500);
        GPIOC->BSRR=0x2000;
        delay(500);
        GPIOC->BRR|=0X2000;       
               
  }
}
回复

使用道具 举报

ID:45334 发表于 2022-1-28 13:52 | 显示全部楼层
用STM32CUBEMX ,容易的很
回复

使用道具 举报

ID:267932 发表于 2022-1-28 15:49 | 显示全部楼层
点灯大师你好,  刚开始可以先学这配置底层寄存器来点灯。
回复

使用道具 举报

ID:608154 发表于 2022-1-28 18:45 来自手机 | 显示全部楼层
谢谢7楼的老师,我下载代码去试试。关键是我刚入门,工程模板都不会创建,更不会移植,网上面F0xx的例程又少,都是F1xx的例程,请问怎样把F1xx例程移植到F0xx中来。
回复

使用道具 举报

ID:378108 发表于 2022-1-28 21:20 | 显示全部楼层
你这不是单片机不会用,你是开发环境不会用
回复

使用道具 举报

ID:608154 发表于 2022-1-29 08:57 来自手机 | 显示全部楼层
的确是MDK不会用,移植过来的代码中的c ,s文件都要重新添加,还有h文件也要重新导入,编译调试要重新配置,谢谢老师们灯已经点亮了
回复

使用道具 举报

ID:917293 发表于 2022-1-29 09:35 来自手机 | 显示全部楼层
吴作和 发表于 2022-1-28 18:45
谢谢7楼的老师,我下载代码去试试。关键是我刚入门,工程模板都不会创建,更不会移植,网上面F0xx的例程又 ...

直接置换输出引脚高低电平就行了
回复

使用道具 举报

ID:116773 发表于 2022-1-30 09:09 | 显示全部楼层
吴作和 发表于 2022-1-29 08:57
的确是MDK不会用,移植过来的代码中的c ,s文件都要重新添加,还有h文件也要重新导入,编译调试要重新配置 ...

已经点亮了LED,说明您已经入门了。再返回重新用STM32Cube新建一个项目前生成代码框架,添加控制LED引脚电平的代码,也许您就会觉得非常容易。
回复

使用道具 举报

ID:116773 发表于 2022-1-30 09:11 | 显示全部楼层
之前不成功的原因大概有两个:一是芯片的型号没有选择正确;二是LED引脚与代码中有差异。
回复

使用道具 举报

ID:620337 发表于 2022-2-14 14:58 | 显示全部楼层
主要还是你的基础 比较差,或者说你很想省钱,,直接在某一个宝花个几十块买一个最基本的模块回来学习,,,需要你折腾那么多吗?
回复

使用道具 举报

ID:879348 发表于 2022-2-14 15:16 | 显示全部楼层
这说明你的资料有问题
回复

使用道具 举报

ID:879809 发表于 2022-2-14 21:33 | 显示全部楼层
有什么错误贴出来啊,光说有错等于没说。
回复

使用道具 举报

ID:843388 发表于 2022-2-15 10:43 | 显示全部楼层
先确定一点,咱们的程序框架对不对,如果我记得没错,030是M0内核,103是M3内核,再其次,可能是程序处理出的问题,32单片机想启动IO口得给IO口“供电”、即启动对应的APB电源,最后的最后,51的IO口如果不考虑很多,可以直接置0置1直接使用,而32的需要你对每个IO使用时先配置。初学可以下载别人的例程,看他的main.C里有什么,为什么加这句话。看视频也是很好的学习途径,用多32会发现很多不同于51的优点
回复

使用道具 举报

ID:236035 发表于 2022-2-15 15:04 | 显示全部楼层
按14楼的搞一下,楼主就真的入门了。
回复

使用道具 举报

ID:499136 发表于 2022-2-17 11:43 | 显示全部楼层
STM32强大在了生态上,但是也造成了从51转32的人不适应写个简单的程序会感觉很麻烦反而没有51上实现简单,我刚转的时候也是这样子建议是先购买现成的开发板(野火、正点原子)跟着例程熟悉一下32的整体程序架构和生态之后就会感觉很舒服啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表