有懂stm32的大佬吗,可以帮忙看个代码吗? stm32代码
- stm32 串口的设置问题,帮忙看下代码
- C语言结构体,不懂呀,玩STM32的来看看
- 刚学完c51,想学习arm,有人推荐了stm32,可发现好难,资料都看不懂,怎么办?
- stm32怎么学,有没有会的,请教一下。
stm32 串口的设置问题,帮忙看下代码
void uart_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<2; //使能PORTA口时钟
RCC->APB2ENR|=1<<14; //使能串口时钟
GPIOA->CRH&=0XFFFFF00F;
GPIOA->CRH|=0X000008B0;//IO状态设置
RCC->APB2RSTR|=1<<14; //复位串口1
RCC->APB2RSTR&=~(1<<14);//停止复位
//波特率设置
USART1->BRR=mantissa; // 波特率设置
USART1->CR1|=0X200C; //1位停止,无校验位.
#ifdef EN_USART1_RX //如果使能了接收
//使能接收中断
USART1->CR1|=1<<8; //PE中断使能
USART1->CR1|=1<<5; //接收缓冲区非空中断使能
MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级
#endif
}
C语言结构体,不懂呀,玩STM32的来看看
这个结构体是里面的成员有普通的成员变量,也有函数指针,你首先应该弄懂
u8具体是什么类型,u16是什么类型
在C语言中自定义一个类型很常见 如:typedef char CT;
char ch 相当于 CT ch
刚学完c51,想学习arm,有人推荐了stm32,可发现好难,资料都看不懂,怎么办?
学习STM32你不能用51的方式去学习,几百个寄存器足以让你失去信心.
建议你使用KEIL或者ST官方提供的库去学习,去下载一个<UM0427_基于ARM的32位MCU STM32F101xx 和 STM32F103xx固件库.pdf>,里面很详细的说明每个库函数的应用.而不是使命啃DATASHEET.
一般来说,STM32启动第一个要做的就是配置RCC(就是时钟).然后配置IO口,中断.
要启用一个外设(如SPI,串口)首先要在RCC里面分配时间,然后配置相应的IO口,中断.
所以,要学STM32,第一要有一个开发环境(你学过C51建议用KEIL开发环境).然后要有一个学习板,百来块钱的就可以了,然后打开一个实例,成功运行后再按文档一步一步理解里面每个语句的功能.当你搞定几个实例的话,就水到渠成了.
stm32怎么学,有没有会的,请教一下。
stm32采用ARM公司的高性能”Cortex-M3”,是ST公司封装的产品。
要学习ARM要先具备以下知识
1.基本的外语知识,可以看懂英文手册,44b0现在有部分书籍可以参考,但是绝大部分手册还是英文的,所以我们还是看懂的好啊
2.良好的C语言基础,绝大部分底层代码都是C语言所写,所以必须精通C语言
3.学会ARM的汇编语言,虽然汇编的程序不是很多,但是也是必不可少的部分,所以最少要看的懂
4.原理图的读图能力,虽然你的目的不是硬件的学习,但是你最好要看的懂原理图。
5.良好的计算机使用能力,应该熟悉必要常见的网络概念和常用的软件操作,除了基本的Windows意外,常用的还有linux,这个在一般的嵌入式开发中也必不可少
准备好这些基础知识就可以开始学习arm的开发了
第一阶段的基本操作学习:
在这个阶段主要学习如何使用这个开发板,熟悉开发板的硬件接口,需要掌握的内容有:
1.了解硬件的基本结构和看懂原理图,浏览44b0的手册,弄清开发板的地址关系
2.学习u-boot的基本操作,比如下载运行一个程序,通过运行我们附带的测试程序测试开发板,以及如何擦除flash,如果通过u-boot烧写flash,如果设置u-boot的参数等。
3.学习使用JTag来烧写boot程序,zaiflash没有u-boot的时候,开发板没有任何程序,超级终端终究没有任何的显示,这时候我们需要使用jtag接口来烧写u-boot程序。然后才可以使用u-boot操作。我们需要熟练的掌握烧写技能。当然flash是有使用寿命的。我们并不建议频繁的烧写falsh。
在这个阶段如果学会了这些基本的应用,我们就已经完成了任务。
第二阶段的学习:
在这个阶段的学习难度会增加不少,主要是学习ARM编译器ads1.2的使用以及各个功能部分的基本操作。
1.学会使用ads1.2来编写程序,使用附带的jtag+AXD来调试程序
2.认证学习各个功能能模块的代码,了解ARM的代码特点,我们的test中附带了20多项的功能演示,通过这些演示来学习用程序对各个功能模块的操作,虽然在实际的使用中很少有人让ARM脱离操作系统运行。但是这些代码为以后学习ARM的驱动程序是很有好处的。对熟悉各个接口的功能也是必不可少的。有的初学者认为比较难,其实这是很基础的代码。需要仔细研究的。入门后就比较容易接受了。
在这里提醒初学者一点,就是在看这些代码的时候不要为了看而看,需要结合原理图,芯片手册来看,比如控制LED的程序,我们首先通过原理图看LED接到了那个IO口上,然后在通过44b0芯片手册观看这个IO的寄存器地址。然后我们查看程序是怎么对这些IO口进行控制的。我们学习的目的是独立开发。所以我也希望初学者掌握这种方法。这才是目的。我们的技术支持人员经常谈论说客户反映已经用过几种开发板或者试验箱了,但是除了那个试验箱或者板子,合适对新的项目无从下手。这个原因就是没有学会分析的方法。
第三阶段的学习:
在这个阶段主要是进行操作系统的学习,也就是最难的学习阶段,目前大部分的嵌入式系统开始采用Linux操作系统,所以我们的开发环境大部分在Linux下完成。我们首先要学会使用Linux,了解Linux的编程环境和方法,通话四我们在这里应该学习如何编译u-boot,了解他的结构和移植的方法。接下来我们需要了解uclinux的编译方法和配置环境。接下来就是研究uclinux的一直和驱动程序的编写了。在这个阶段你需要了解linux的工作机制和makefile等文件的编写。在这个阶段是最漫长的,也是无止境的。
做完了这些。我们已经对ARM嵌入式系统的开发已经基本入门了。以后就是根据你的需要学习了。比如使用其他的操作系统,开发项目等等。