-
做个记号
-
顶一顶.
-
你是用I2C接口吧,I2C要是接在硬件SDA,SCL上就直接配置I2C寄存器就好了,加了外部上拉就好了。要是你是IO模拟的I2C,你外部有上部只要设置输入输出的方向,输出的话设成推挽输出就好了。
-
你这定时太短了,好像很少有用到的场合
-
我已经清了,但是在程序一开始运行就离开进入中断了,但不知道进入的哪个中断(我没有仿真器)。出来中断程序,后面的程序都没有机会运行。
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
/* Read one byte from the receive data register */
USART_ClearITPendingBit(USART1, USART_IT_RXNE); //清除中断标志
NVIC_ClearPendingIRQ(USART1_IRQn);//清除中断标志
}
-
占楼学习
-
引用楼主 ocean5678 的回复:
机器码就是cpu指令码?
好像是的
编译程序或汇编程序最后生成的BIN或HEX文件就是机器码或者说CPU指令码,除了数据区域比如程序里面定义的一段常量。
-
引用 12 楼 xiajunqing 的回复:
引用 11 楼 zhoushunda960 的回复:
你可以把乱码贴出来,让大家帮你分析一下。
显示的时候改成hex方式显示,千万别贴字符的。
另外你代码也不全。不好分析。
这是最主要的代码,如果都贴出来的话好长的,更不容易看的懂,我接收的2脚可能是GPS数据,我的这个是一个手机模块,2脚的数据是什么我不清楚,只有接收到了我才知道,下面就是乱码了
88 0E 02 CA 48 48 40 B8 C0 CC CA F0 C8 F0 BC C0 C0 C4 B8 CE F2 C0 CC BC F2 CA F0 C2 B8 3C C2 34 34 1C 34 04 C4 32 46 38 CC C2 B8 0A 32 32 32 32 32 32 32 32 32 32 8A 38 0A 32 44 1C B2 F4 84 32 32 B2 8C 3A B8 C0 CA B8 B8 B8 C4 C2 B4 CE 08 CA 34 88 0E 02 8A 4A B4 B0 32 C4 B4 04 1C 46 C4 32 04 44 84 32 4A B2 46 3C C0 CC BC F2 CA F0 C2 B8 3C C2 34 34 04 34 04 C4 32 46 38 CC C2 B8 0A
少说了一句,还有原码
-
引用 15 楼 zhoushunda960 的回复:
? ? 我也和lz有同感,我是原来是搞软件的。只是因为工作需要,被迫学习的51单片机c语言编写。在学习开始阶段,主要是看公司原来那些搞硬件的工程师留下的程序。虽然是用c写的,但结构那个一个叫乱,可读性和汇编语言写的有一拼。
? ? 后来随着学习的不断深入,我开始从网上下载高人的一些代码,还有就是多看keil c本身自己带的demo程序和一些linux内核代码片段(主要是看程序结构及处理问题的思路),然后结合以前学习的软件知识以及51本身的一些特性,逐步总结出了一些思路。
? 1、在编写程序的时候,先分析所要实现的功能,然后功能细分为模块,实现程序的模块化,这样在将来代码修改,维护上都会带来很大的方便。
? 2、将与硬件有关的部分代码(驱动部分)和与事物处理有关的部分的代码分开。
? 3、参考windows编程中的消息队列,多采用发消息方式进行对任务的处理,这样既可以提高cpu的使用率,还可以使程序结构清晰明了。
? 4、变量名称定义要统一,名字要有意义。这点主要是为了日后的代码维护。我的前辈给我留下的代码,变量名十分随意,阅读起来十分费力。具体可参考匈牙利法或者其它方法。
? 5、代码格式要规范整洁。可参考华为《c语言规范》
? 6.......
后面的暂时还没想起来,以后想起来在随时补充。
这只是我的一些学习经历和想法,可能有很多地方不成熟,请广大高人指点。
我也要学习一下啊!
-
看起来还有点诱惑力
-
就是程序中执行SEV汇编指令,可以在引脚上输出一个脉冲。使用这个脉冲做为另一个MCU的外部中断源。
-
获得的句柄无效。
《圈圈教你玩USB》一书有详细代码可供参考。
-
引用 3 楼 guopeixin 的回复:
引用 2 楼 dengchonglin 的回复:
引用 1 楼 guopeixin 的回复:
IOCTL_HAL_POSTINIT是给oem最后一次在系统正式开始调度之前一个机会做一些事情,IOCTL_HAL_GET_HIVE_CLEAN_FLAG 是在分区都已经mount成功的时候才可能走到
所以他们之间还有很多事情要做,建议lz先在中间加一些debug信息,比如flash的初始化等等,这样方便找到可能的位置
呵呵,我还是个菜鸟呢~!
不了解 FLASH 是怎么样的流程呢~!
入口函数在哪里~!
这样子呀,估计不好查了,呵呵
入口在fmd_init
我查到了,就是 FLASH 初始化那里出错了。
另外
BOOL OALIoCtlHalPostInit(
UINT32 code, VOID *pInpBuffer, UINT32 inpSize, VOID *pOutBuffer,
UINT32 outSize, UINT32 *pOutSize)
{
// Do nothing for now.
//
// *pOutSize = 0 ;
return(TRUE);
}
如果把 *pOutSize = 0 ; 打开,
系统就进不到 FLASH 初始化,
屏蔽后就进到了 FLASH 初始化。
还不知道什么原因~!
-
没有加上相应的解码组件。
-
GPIO_SetBits(GPIOA, GPIO_Pin_3); //T1
GPIO_SetBits(GPIOA, GPIO_Pin_2); //T2
GPIO_SetBits(GPIOA, GPIO_Pin_1); //T3
GPIO_SetBits(GPIOA, GPIO_Pin_10); //T13
GPIO_SetBits(GPIOA, GPIO_Pin_9); //T14
GPIO_SetBits(GPIOB, GPIO_Pin_0); //T4
GPIO_SetBits(GPIOB, GPIO_Pin_1); //T5
GPIO_SetBits(GPIOB, GPIO_Pin_10); //T6
GPIO_SetBits(GPIOB, GPIO_Pin_11); //T7
GPIO_SetBits(GPIOB, GPIO_Pin_8); //T8
GPIO_SetBits(GPIOB, GPIO_Pin_9); //T9
GPIO_SetBits(GPIOB, GPIO_Pin_5); //T10
GPIO_SetBits(GPIOB, GPIO_Pin_6); //T11
GPIO_SetBits(GPIOB, GPIO_Pin_7); //T12
用的是PA和PB,STM32输出接一10K上拉电阻.光藕端的电源是5V,STM32电源是从5V稳压到3.3V.STM32的IO输出接7407缓冲开漏输出接光藕7407的输出接上拉到5V.如果STM32复位是高阻那我有一上拉电阻可以强制到高啊
-
对于149可以外接电阻也可通过DCOR设置接内部电阻用于DCO
-
有点眉目了,可能是我没对ADS的调试环境进行设置
初始化一下SDRAM,ok,应该是这样的,试一下
吃烧烤去了
-
回gooogleman :
最近刚搞完键盘驱动,正在开始搞文件系统,感觉驱动都差不多,先看别人的代码了,呵呵
你那里搞的怎样?
-
gooogleman说自己俗,让人汗颜啊。
-
1楼的说的差不多,像MC55模块有一个串口波特率是自适应的,可以不用设置,但也可以重新设置;另外一个串口会有一个默认的波特率,但也可以重新设置。