完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
出来冒个泡,那位大虾,有7寸pdf液晶屏资料手册(中文的)呀。。
发来研究下了。。以前的问题终于解决了。。keil3实现汇编。。如果没有网上的帮助,本人也不会走到这一步。。发来源代码供参考,弄得太乱,,高手勿喷。。 文章有部分取自网络。。STM32汇编时,先打开Option for target选项,linker选项卡 最上面的 user momeny layout ......那个勾去掉。。。这项尤其重要。。。。 先发了51c 后面的是stm32汇 LR_IROM1 0x08000000 0x00020000 { ; load region size_region ER_IROM1 0x08000000 0x00020000 { ; load address = execution address *.o (RESET, +First) .ANY (+RO) } RW_IRAM1 0x20000000 0x00005000 { ; RW data .ANY (+RW +ZI) } } #include typedef unsigned char uchar; uchar data jianzhi; uchar data shuzhi; void yanshi(uchar i) { uchar jj,k; for(jj=i;jj>0;jj--) for(k=125;k>0;k--); } uchar saomiao() { uchar j; j=P1; j=j&0x0f; return(j); } main() { jianzhi=0x0f; shuzhi=0x00; P1=0x0f; jianzhi=saomiao(); if(jianzhi!=0x0f) { yanshi(10); jianzhi=saomiao(); if(jianzhi!=0x0f) { switch(jianzhi) { case 0x0e: shuzhi=0x01; break; case 0x0d: shuzhi=0x02; break; case 0x0b: shuzhi=0x03; break; case 0x07: shuzhi=0x00; break; default: shuzhi=0x00; break; } } } } BIT5 EQU 0X00000020 BIT8 EQU 0X00000100 BIT9 EQU 0X00000200 BIT10 EQU 0X00000400 LED1 EQU BIT8 ;LED1--PD.8 LED2 EQU BIT9 ;LED2--PD.9 LED3 EQU BIT10 ;LED3--PD.10 GPIOD EQU 0X40011400 ;GPIOD 地址 GPIOD_CRL EQU 0X40011400 ;低配置寄存器 GPIOD_CRH EQU 0X40011404 ;高配置寄存器 GPIOD_ODR EQU 0X4001140C ;输出,偏移地址0Ch GPIOD_BSRR EQU 0X40011410 ;低置位,高清除偏移地址10h GPIOD_BRR EQU 0X40011414 ;清除,偏移地址14h IOPDEN EQU BIT5 ;GPIOD使能位 RCC_APB2ENR EQU 0X40021018 Stack_Size EQU 0x00000200 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp PRESERVE8 THUMB AREA RESET, DATA, READONLY EXPORT __Vectors __Vectors DCD __initial_sp DCD START AREA |.text|, CODE, READONLY ENTRY START PROC EXPORT START [WEAK] BL.W RCC_CONFIG_72MHZ LDR R1,=RCC_APB2ENR LDR R0,[R1] ;读 LDR R2,=IOPDEN ORR R0,R2 ;改 STR R0,[R1] ;写,使能GPIOD时钟 ;LED1--PD.8 推挽输出,50MHz ;LED2--PD.9 推挽输出,50MHz ;LED3--PD.10 推挽输出,50MHz MOV R0,#0x333 LDR R1,=GPIOD_CRH ;PD.8910均在高寄存器 STR R0,[R1] NOP NOP LDR R1,=GPIOD_ODR LDR R2,=0x00000F00 MOV R3,#1 LOOP STR R2,[R1] MOV R0,#11 ;1125/9=125ms BL.W DELAY_NMS EOR R2,#LED3 ;翻转LED3 ADD R3,#1 ;计数加1 CMP R3,#1 BEQ STATE1 CMP R3,#3 BEQ STATE2 CMP R3,#5 BEQ STATE3 CMP R3,#7 BEQ STATE4 CMP R3,#8 BEQ STATE5 B GOON STATE1 ;状态1 EOR R2,#LED1 EOR R2,#LED2 B GOON STATE2 ;状态2 EOR R2,#LED2 B GOON STATE3 ;状态3 EOR R2,#LED1 EOR R2,#LED2 B GOON STATE4 ;状态4 EOR R2,#LED2 B GOON STATE5 ;状态5 MOV R3,#0 GOON B LOOP ;继续循环 RCC_CONFIG_72MHZ LDR R1,=0X40021000 ;RCC_CR LDR R0,[R1] LDR R2,=0X00010000 ;HSEON ORR R0,R2 STR R0,[R1] WAIT_HSE_RDY LDR R2,=0X00020000 ;HSERDY LDR R0,[R1] ANDS R0,R2 CMP R0,#0 BEQ WAIT_HSE_RDY LDR R1,=0X40022000 ;FLASH_ACR MOV R0,#0X12 STR R0,[R1] LDR R1,=0X40021004 ;RCC_CFGR时钟配置寄存器 LDR R0,[R1] ;PLL倍频系数,PCLK2,PCLK1分频设置 ;HSE 9倍频PCLK2=HCLK,PCLK1=HCLK/4 ;HCLK=72MHz 0x001D0400 ;HCLK=64MHz 0x00190400 ;HCLK=48MHz 0x00110400 ;HCLK=32MHz 0x00090400 ;HCLK=24MHz 0x00050400 ;HCLK=16MHz 0x00010400 LDR R2,=0x001D0400 ORR R0,R2 STR R0,[R1] LDR R1,=0X40021000 ;RCC_CR LDR R0,[R1] LDR R2,=0X01000000 ;PLLON ORR R0,R2 STR R0,[R1] WAIT_PLL_RDY LDR R2,=0X02000000 ;PLLRDY LDR R0,[R1] ANDS R0,R2 CMP R0,#0 BEQ WAIT_PLL_RDY LDR R1,=0X40021004 ;RCC_CFGR LDR R0,[R1] MOV R2,#0X02 ORR R0,R2 STR R0,[R1] WAIT_HCLK_USEPLL LDR R0,[R1] ANDS R0,#0X08 CMP R0,#0X08 BNE WAIT_HCLK_USEPLL BX LR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;RCC 时钟配置 HCLK=48MHz=HSE*6 ;;;PCLK2=HCLK PCLK1=HCLK/2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RCC_CONFIG_48MHZ LDR R1,=0X40021000 ;RCC_CR LDR R0,[R1] LDR R2,=0X00010000 ;HSEON ORR R0,R2 STR R0,[R1] WAIT_HSE_RDY1 LDR R2,=0X00020000 ;HSERDY LDR R0,[R1] ANDS R0,R2 CMP R0,#0 BEQ WAIT_HSE_RDY1 LDR R1,=0X40022000 ;FLASH_ACR MOV R0,#0X12 STR R0,[R1] LDR R1,=0X40021004 ;RCC_CFGR LDR R0,[R1] ;HSE 6倍频 PCLK2=HCLK,PCLK1=HCLK/2 LDR R2,=0X00110400 ORR R0,R2 STR R0,[R1] LDR R1,=0X40021000 ;RCC_CR LDR R0,[R1] LDR R2,=0X01000000 ;PLLON ORR R0,R2 STR R0,[R1] WAIT_PLL_RDY1 LDR R2,=0X02000000 ;PLLRDY LDR R0,[R1] ANDS R0,R2 CMP R0,#0 BEQ WAIT_PLL_RDY1 LDR R1,=0X40021004 ;RCC_CFGR LDR R0,[R1] MOV R2,#0X02 ORR R0,R2 STR R0,[R1] WAIT_HCLK_USEPLL1 LDR R0,[R1] ANDS R0,#0X08 CMP R0,#0X08 BNE WAIT_HCLK_USEPLL1 BX LR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;RCC 时钟配置 HCLK=24MHz=HSE*3 ;;;PCLK2=HCLK PCLK1=HCLK/2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RCC_CONFIG_24MHZ LDR R1,=0X40021000 ;RCC_CR LDR R0,[R1] LDR R2,=0X00010000 ;HSEON ORR R0,R2 STR R0,[R1] WAIT_HSE_RDY2 LDR R2,=0X00020000 ;HSERDY LDR R0,[R1] ANDS R0,R2 CMP R0,#0 BEQ WAIT_HSE_RDY2 LDR R1,=0X40022000 ;FLASH_ACR MOV R0,#0X12 STR R0,[R1] LDR R1,=0X40021004 ;RCC_CFGR LDR R0,[R1] ;HSE 3倍频PCLK2=HCLK,PCLK1=HCLK/2 LDR R2,=0X00050400 ORR R0,R2 STR R0,[R1] LDR R1,=0X40021000 ;RCC_CR LDR R0,[R1] LDR R2,=0X01000000 ;PLLON ORR R0,R2 STR R0,[R1] WAIT_PLL_RDY2 LDR R2,=0X02000000 ;PLLRDY LDR R0,[R1] ANDS R0,R2 CMP R0,#0 BEQ WAIT_PLL_RDY2 LDR R1,=0X40021004 ;RCC_CFGR LDR R0,[R1] MOV R2,#0X02 ORR R0,R2 STR R0,[R1] WAIT_HCLK_USEPLL2 LDR R0,[R1] ANDS R0,#0X08 CMP R0,#0X08 BNE WAIT_HCLK_USEPLL2 BX LR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;延时R0(ms),误差((R0-1)*4+12)/8 us ;延时较长时,误差小于0.1% DELAY_NMS PUSH {R1} ;2个周期 DELAY_NMSLOOP SUB R0,#1 MOV R1,#10 DELAY_ONEUS SUB R1,#1 NOP NOP NOP CMP R1,#0 BNE DELAY_ONEUS CMP R0,#0 BNE DELAY_NMSLOOP POP {R1} BX LR ENDP END 评分 |
|
相关推荐
3个回答
|
|
希望,学stm32的朋友能从这里入门
|
|
|
|
|
|
液晶嘛 得看是什么驱动 不用的驱动 实现起来是不一样的 只看尺寸是没法开发的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
195 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
172 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
453 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
697 浏览 2 评论
602 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11982 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 01:38 , Processed in 0.619352 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号