论坛» DIY与开源设计» 电子DIY

manhuami2007 ARM DIY 进程帖

菜鸟
2012-03-06 19:30 1楼

呵呵 先等待公布名单了
3.28
今天收到DIY的pcb板子了,绿油油的,呵呵,开始买件了

专家
2012-03-06 22:29 2楼
耐心等吧!!
菜鸟
2012-04-10 08:32 3楼
呵呵,接下来开始学习各种外设,主要是想学习一下GUI,加油
菜鸟
2012-04-25 18:18 4楼

明天想把DS18B20的数据发送出来,明天再加油吧
还有一个问题,我看大部分人更新都是在“回复本帖”中更新,而我是在“编辑”中更新,到底哪个是正确的啊?

高工
2012-04-25 19:48 5楼
都一样,在回复中更新,然后整理链接到一楼最好了,这样方便大家查看
菜鸟
2012-04-26 21:23 6楼
4.8~4.9
昨天我的零件包到了,花了我快二百大洋啊,呵呵。经过昨天与今天的努力终于完成了焊接,好辛苦啊,放上图片,我的焊工太差了,大家不要笑话啊。


这是元件包



这是今天焊完成的,手机不好,照的太差了,不过我焊的也难看,呵呵。
在焊接stm32f103的时候,想用一次传说中的脱焊,可能是我还没领略到其中的精髓,焊失败了,直接干掉一个片子。好了先去吃饭,吃完上传我的跑马灯程序,呵呵。

下面是我的跑马灯程序


菜鸟
2012-04-26 21:24 7楼
4.25 串口的使用
最近有点小忙,所以好久没更新了,今天学了学用printf发送数据,而且还编了个,我发什么,超级终端上显示什么的小程序。
使用printf函数必须在options for target ---- target----code generation 中 勾选use microLIB。而且在源程序中加入如下代码
#include
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

PUTCHAR_PROTOTYPE
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);

/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}

return ch;
}

我还编写了一个自发自显的程序下面是效果图

下面是源代码,各位可以参考下
manhuami2007 串口.zip

菜鸟
2012-04-26 21:26 8楼

4.26 今天光研究systick了,因为驱动DS18B20需要一定时间的延时,所以想采用systick,一共有3中方法实现延时第一种也就是最简单的使用for循环,但是不精确,实现us级的延时怕不好使,还有两种方法就都是使用systick了,一种需要进中断,一种不需要进中断,进中断会浪费系统时钟,所以我选择的是不进中断的,现在把下面两种方法都说一下
stm32的systick的程序设置,当使用systick_config()函数之后,其计数寄存器的载入值就是你输入的参数,并且自动打开中断,并将中断设为最低的优先级,将其时钟设为HCLK即系统时钟72mhz,并重置计数寄存器开始计数。也可以将时钟设置为HCKL的八分频,通过使用SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8) 紧跟在systick_config()之后,而改变优先级则使用NVIC_SetPriority(SysTick_IRQn,...) 函数,而时基单元的设置使用如下公式,Reload Value = SysTick Counter Clock (Hz) x Desired Time base (s) Reload Value 就是传递进去的参数。但参数不能超过0xFFFFFF,也就是说通过systick_config()这一个函数就实现了systick的各种设置,也会自动打开中断,下面是源代码
延时函数
void delay_systick_it(uint16_t time)
{
timedly=time;
while(timedly!=0);
}
中断函数
void SysTick_Handler(void)
{
if(timedly!=0)
{
timedly--;
}
}
而要想不进中断实现延时就要通过写寄存器来实现了,下面是相关寄存器的图片

systick的时钟,systick的时钟包括内部时钟和外部时钟,对于stm32 其内部时钟FCLK就是AHB的时钟,72MHz,外部时钟就是8分频后的时钟,9MHz。因此使用systick_config()函数时其默认时钟为72MHz。不进中断的延时的相关代码如下
void delay_systick_ask(uint16_t time)
{
uint32_t temp;
SysTick->LOAD=9000*time;
SysTick->VAL=0x00;
SysTick->CTRL=0x01;
/*第0位 使能Systick 第1位 0无动作 1中断请求
第二位 0内部时钟72MHz 1外部时钟9MHz 第16位指出是否计数到0*/
do
{
temp=SysTick->CTRL ;
}while((temp&0x01)&&(!(temp&(1<<16))));
SysTick->CTRL=0x00;
SysTick->VAL=0x00;
}

菜鸟
2012-04-26 21:30 9楼

这个链接怎么整理到一楼啊 ??

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]