历史上的今天
返回首页

历史上的今天

今天是:2025年03月02日(星期日)

2020年03月02日 | 【菜鸟入门】stm32的第一个程序--LED

2020-03-02 来源:eefocus

经过今天一天的努力终于完成了我的stm32第一个程序;我也是今天才开始接触stm32。


由于苦于没有资料,木有例程,找到的例程都是带有库的,这样对stm32基础的管脚配置就不容易懂了,主要是没有一个具体的轮廓。


经过对库文件的研究,和看了好几节视频,又根据自己以前搞430和arm9的经验,就按着以前的思路进行研究,终于开发出自己的第一个LED程序;


1、创建工程


(1)Project  -->   New uvision Project 


(2)选择工程要保存的地方


(3)选择CPU


(4)选择“是”(如果你使用从STM下载的库的话,就选“否”)




(5)修改一下代码(如果不注视掉红色部分,会出现错误)


; Reset handler

Reset_Handler   PROC

                EXPORT  Reset_Handler             [WEAK]

                IMPORT  __main

;IMPORT  SystemInit

                ;LDR     R0, =SystemInit

                ;BLX     R0

                LDR     R0, =__main

                BX      R0

                ENDP





(6)加入定义


Flash  --> Flash config tools -->  C/C++  -->


在Defines里面添加:STM32F10X_HD


不然也会提示错误!


(7)Jlink下载设置(如果你用的是Jlink可以设置下)


在(6)的Flash config tools中的Debug中选中use [J-LINK / J-Trace Cortex ] -->Setting --> Flash Download 按照如下设置




这样算是大致设置好了。




2、编写时钟初始化程序



int sys_init(unsigned char PLL)

{

unsigned char temp = 0;

RCC->CR |= 1<<16; //OPEN HSE 

while(!(RCC->CR>>17));

RCC->CFGR = 0x04<<8; //APB1 HSE/2

PLL -= 2; //9-2 = 0111b

RCC->CFGR |= PLL << 18; //0111 ==> X9

RCC->CFGR |= 1 << 16; //PREDIV1 ouput as source of PLL

FLASH->ACR |= 0x32; //With

RCC->CR |= 1<<24; //enable PLL [24bit]

while(!(RCC->CR >> 25));

RCC->CFGR |= 0x2<<0;//PLL As System Clock

while(temp != 0x02)

{

temp = RCC->CFGR >> 2;

temp &= 0x03;

}

return 0;

}



具体数值为什么这么配置,请看寄存器


3、延时函数


为了实现准确延时,我们选用SysTick


void delay_ms(int timeout)

{

  u32 temp = 0;

SysTick->CTRL = 0xfffffffb;

SysTick->LOAD = timeout*9000;

SysTick->VAL  = 0x00;

SysTick->CTRL = 0x01;

do{

temp = SysTick->CTRL;

}while((temp&0x01)&&!(temp&(1<<16)));

SysTick->CTRL = 0x00;

SysTick->VAL  = 0x00;

}


这里的timeout不能超过一个值,具体多大可以自己计算下;

LOAD为24位 0xffffff/9000 = timeout_max;【注:感谢@大黄同学的帮我指出错误!!可以看下下面的寄存器】




STK_LOAD可用位数为[23:0];【再次感谢大黄!!!】


4、LED灯的控制


我的板子LED灯与stm32的pin是这样对应的


LED1  -->  PE1

LED2  -->  PE0      

LED3  -->  PE2       

LED4  -->  PE3


我这里准备对LED2/PE0进行操作


int main()

{

    sys_init(9);    //系统时钟初始化72M = 8M X 9

RCC->APB2ENR |= 1<<6;  //使能GPIOE的时钟

GPIOE->CRL &= 0xFFFFFFF0;//清除PE0的控制位

    GPIOE->CRL |= 0x00000003; //选用输出模式 --->50MHz

    GPIOE->ODR |= 1<<0;//设置PE0位输出模式

   //GPIOE->BRR = 1<<0;//设置PE0输出的电平

    while(1){

        delay_ms(1000);

        GPIOE->BRR = 1<<0;//

        delay_ms(1000);

        GPIOE->BSRR = 1<<0;//

    }

}

推荐阅读

史海拾趣

ECLIPSE公司的发展小趣事

尽管Eclipse是一个开源项目,但其背后也有着商业化的运作。一些公司看到了Eclipse的潜力,纷纷推出了基于Eclipse的商业产品。这些产品不仅继承了Eclipse的优秀特性,还加入了一些独特的功能和服务,以满足不同客户的需求。通过商业化运作,Eclipse的影响力得到了进一步扩大。

蓝箭(BLUE ROCKET)公司的发展小趣事

随着市场的不断扩大和需求的增加,蓝箭电子逐渐形成了年产150亿只的生产规模,成为华南地区主要的半导体器件生产基地之一。公司凭借优质的产品和服务,赢得了广大客户的认可,市场份额逐年提升。

DURAKOOL公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,DURAKOOL公司始终保持着对创新的追求。公司不断投入研发资源,推动产品升级和技术进步。同时,公司也关注行业趋势和未来发展,积极探索新的业务领域和市场机会。展望未来,DURAKOOL将继续致力于成为全球电子行业的领先者。

请注意,以上故事均为虚构,旨在提供与DURAKOOL公司发展相关的故事概要。如需了解更多关于DURAKOOL公司的详细信息,建议查阅相关报道或公司官方资料。

Curtis Instruments Inc公司的发展小趣事

Curtis一直致力于环保和低碳技术的研发与应用。公司的产品和服务广泛应用于电动汽车、混合动力汽车等环保型交通工具中,为减少碳排放、推动绿色出行做出了积极贡献。同时,Curtis还积极参与各种环保活动和社会公益项目,通过实际行动践行环保理念。

富瀚(Fullhan)公司的发展小趣事
确认测试用的负载设备是否工作正常,无异常波动或故障。
Apex [Apex Microtechnology]公司的发展小趣事

在作为Cirrus Logic分公司运营了五年后,Apex Microtechnology于2012年重新回归独立私营状态。这次变革使得Apex Microtechnology能够更加灵活地应对市场变化,加速产品创新和研发。同时,公司也扩大了其业务范围,进一步巩固了在电子行业的地位。

问答坊 | AI 解惑

有谁知道AMAT HDP PSG 在0.13LG ILD 的DEFECT怎么解决。

在0.13LG ILD PSG的PROCESS之后,总是会被YE检到外形平平的defect,作过SEM CUT check,证实DEFECT就在film里面,小弟我解了3年了还是没搞定,有没有大虾知道如何解决啊???…

查看全部问答>

CDMA1x移动车载视频监控管理系统

1  设计要求1.1  技术设计要求采用2卡或4卡CDMA1x无线网络进行实时视频传输, 前端采集、传输设备安装在车辆上在移动使用支持中心组网、分级管理支持电视墙观看视频支持无线观看视频(笔记本,PDA)视频信息可传送到各级管理机 ...…

查看全部问答>

高频的资料在那个部分

我个人觉得高频这方面得知识在电子信息工程世界中应该单独列一个版块出来,这方面不好做,但是我想可以有这一部分,有模电部分,就应该加高频的部分,希望版主可以采纳。…

查看全部问答>

论坛里是否有对24G平面微带技术雷达信号处理的高手啊?

我司有做24G平面微带技术雷达,但目前的难点集中在DSP信号处理上,不知道论坛中是否有这方面的高手一同探讨一下;如用在交通测速测距、安防监控、液位物位测量等方面的信号处理,用什么样的DSP处理比较能突显产品的特点呢? 欢迎大家来给我意见。…

查看全部问答>

EPM240装5个串口可装的下?

我知道发错了地方,但是很急,这人气旺,,谅解一下啦。。 DEV_OE、DEV_CLRn不接也可以的吧?…

查看全部问答>

用奶瓶制作有源音箱

从网上看到的用奶瓶DIY音箱,觉得好有趣,于是摘下来和大家分享。 接MP3 这是在网络上找到的图稍微做了一些修改 试听 先钻四个孔 四个孔都装上铜柱 调音板要裝机的孔 底部钻孔后所上螺絲 上一编文章: …

查看全部问答>

关于wince5.0英文版模拟器 中文的问题

首先,非常感谢大家的帮助 我的开发工具是vs2005 手持设备是casio dt-x7。他的操作系统是wince5.0英文版。 目前,我在使用模拟器进行测试,但是,中文不能显示,从数据库读出和写入的也都是乱码。 现在想请教,我现在想测试中文的东西。 怎样 ...…

查看全部问答>

关于Wince->WM的猜想

请教坛子里的高手,如果我想把WM的上层,比如注册表和应用程序直接copy到wince的工程里面,是否可以得到WM下面的所有应用和界面?理论上wm是基于ce5的,我们能提供一个平台,然后仅仅移植WM的AP和注册表。WM的AP和注册表可以从既有的WM的BSP编译后 ...…

查看全部问答>

界面问题

我在wince下用evc编程做了一个界面,发现上面的按钮太小了,想放大一些,可是组合框那个控件的宽度好象改不了,只能改长度,不知道有没有哪位大侠知道怎么做啊??…

查看全部问答>