标题: 从51单片机过渡到stm32,使尽浑身解数点不亮一个Led灯 [打印本页]

作者: 吴作和    时间: 2022-1-27 23:00
标题: 从51单片机过渡到stm32,使尽浑身解数点不亮一个Led灯
从51过渡到stm32,网上拚命收集资源,keil官网下载了MDK536,又下载了stm32f0xx和f1xx芯片包,没板去街边修车店捡个控制器回来,拆开看是f030c6t6,那就从这个开始,于是网上找啊找,找到了大牛(青风)的点灯例程,用mdk536打开几十个error,库函数版本的根本不知道错在哪个地方,更别提改错了。
作者: 吴作和    时间: 2022-1-27 23:11
本帖最后由 吴作和 于 2022-1-28 18:51 编辑

不甘心就这么放弃,于是又继续找,找到了原子点灯例程,编译零错误零警告通过,但是一看:mcu是f103zet6,但是我的是f030c6t6,还是无法硬件下载,只好继续寻找,又找到一个资源,就是<<stm32从入门到精通>>中的最简单的点灯例子,不需要用一个库函数,也不需要导入一个h文件,赶紧复制粘贴到工程中来,进行编译又是一个错误,并且错误位置都没有提示,
作者: 吴作和    时间: 2022-1-27 23:17
继续折腾,折腾到下载cubeMX,图型化创建了一个点灯工程,用MDK5打开后继续编译,还是有一个错误,定位到错误之处也看不懂,就这样折腾了五六天,最后只能放弃stm32返回到c51了
作者: wetzhy    时间: 2022-1-28 08:40
其实主要还是你的编程基础,模块化编译的问题
作者: 温xyz    时间: 2022-1-28 10:02
我的水平只能玩玩STM8,业余玩玩,感觉STM32太深奥了。
作者: wzmwhf    时间: 2022-1-28 11:09
完全寄存器方式的 ,和51的几乎一样,输出pc13,不合适自己改一下

STM030TEST.rar

496.67 KB, 下载次数: 7


作者: wzmwhf    时间: 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;       
               
  }
}
作者: qsgang    时间: 2022-1-28 13:52
用STM32CUBEMX ,容易的很
作者: zhai1995    时间: 2022-1-28 15:49
点灯大师你好,  刚开始可以先学这配置底层寄存器来点灯。
作者: 吴作和    时间: 2022-1-28 18:45
谢谢7楼的老师,我下载代码去试试。关键是我刚入门,工程模板都不会创建,更不会移植,网上面F0xx的例程又少,都是F1xx的例程,请问怎样把F1xx例程移植到F0xx中来。
作者: zhxzhx    时间: 2022-1-28 21:20
你这不是单片机不会用,你是开发环境不会用
作者: 吴作和    时间: 2022-1-29 08:57
的确是MDK不会用,移植过来的代码中的c ,s文件都要重新添加,还有h文件也要重新导入,编译调试要重新配置,谢谢老师们灯已经点亮了
作者: wuyize    时间: 2022-1-29 09:35
吴作和 发表于 2022-1-28 18:45
谢谢7楼的老师,我下载代码去试试。关键是我刚入门,工程模板都不会创建,更不会移植,网上面F0xx的例程又 ...

直接置换输出引脚高低电平就行了
作者: hujj    时间: 2022-1-30 09:09
吴作和 发表于 2022-1-29 08:57
的确是MDK不会用,移植过来的代码中的c ,s文件都要重新添加,还有h文件也要重新导入,编译调试要重新配置 ...

已经点亮了LED,说明您已经入门了。再返回重新用STM32Cube新建一个项目前生成代码框架,添加控制LED引脚电平的代码,也许您就会觉得非常容易。
作者: hujj    时间: 2022-1-30 09:11
之前不成功的原因大概有两个:一是芯片的型号没有选择正确;二是LED引脚与代码中有差异。
作者: fqc168    时间: 2022-2-14 14:58
主要还是你的基础 比较差,或者说你很想省钱,,直接在某一个宝花个几十块买一个最基本的模块回来学习,,,需要你折腾那么多吗?
作者: wufa1986    时间: 2022-2-14 15:16
这说明你的资料有问题
作者: rundstedt    时间: 2022-2-14 21:33
有什么错误贴出来啊,光说有错等于没说。
作者: Kj102069    时间: 2022-2-15 10:43
先确定一点,咱们的程序框架对不对,如果我记得没错,030是M0内核,103是M3内核,再其次,可能是程序处理出的问题,32单片机想启动IO口得给IO口“供电”、即启动对应的APB电源,最后的最后,51的IO口如果不考虑很多,可以直接置0置1直接使用,而32的需要你对每个IO使用时先配置。初学可以下载别人的例程,看他的main.C里有什么,为什么加这句话。看视频也是很好的学习途径,用多32会发现很多不同于51的优点
作者: ly1972001    时间: 2022-2-15 15:04
按14楼的搞一下,楼主就真的入门了。
作者: 韩晗    时间: 2022-2-17 11:43
STM32强大在了生态上,但是也造成了从51转32的人不适应写个简单的程序会感觉很麻烦反而没有51上实现简单,我刚转的时候也是这样子建议是先购买现成的开发板(野火、正点原子)跟着例程熟悉一下32的整体程序架构和生态之后就会感觉很舒服啦。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1