5330|12

22

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

晒设计方案+STM32F429加入延时,串口,位带操作 [复制链接]

在已经建立好工程模板的基础上,进一步加入简单的操作函数方便以后的编程,直接使用原子哥战舰开发板配套程序system文件夹里的函数,这跟文件夹里有延时函数,串口函数,位带操作函数,平常使用是非常方便,所以就把这个文件夹直接拷到stm32f429的工程模板中。
打开工程,在manage projectitems中新建sys文件夹,并将该文件夹下的.c文件添加进来,并且在options for target里c/c++选项卡中添加相应.h文件。类似于工程模板建立的过程。
延时函数和位带操作函数直接可以使用,串口初始化函数需要重新定义串口的引脚。具体程序:
void uart_init(u32 bound){
   //GPIO端口设置
   GPIO_InitTypeDef GPIO_InitStructure;
         USART_InitTypeDefUSART_InitStructure;
         NVIC_InitTypeDefNVIC_InitStructure;
         
           /* Enable GPIOC and GPIOE clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE);
         
           /* Enable USART1 APB clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
           /* USART1 Pins configuration************************************************/
  /*Connect pin to Periph */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);   
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
         
  /*Configure pins as AF pushpull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);             //TX
  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);             //RX
  //Usart1 NVIC 配置
   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级3
         NVIC_InitStructure.NVIC_IRQChannelSubPriority= 3;            //子优先级3
         NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;                    //IRQ通道使能
         NVIC_Init(&NVIC_InitStructure);    //根据指定的参数初始化VIC寄存器
  
  //USART 初始化设置
         USART_InitStructure.USART_BaudRate= bound;//一般设置为9600;
         USART_InitStructure.USART_WordLength= USART_WordLength_8b;//字长为8位数据格式
         USART_InitStructure.USART_StopBits= USART_StopBits_1;//一个停止位
         USART_InitStructure.USART_Parity= USART_Parity_No;//无奇偶校验位
         USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None;//无硬件数据流控制
         USART_InitStructure.USART_Mode= USART_Mode_Rx | USART_Mode_Tx;        //收发模式
   USART_Init(USART1, &USART_InitStructure); //初始化串口
   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断
   USART_Cmd(USART1, ENABLE);                    //使能串口
}
在真正使用的时候,因为原子哥对printf函数做了重定义,所以直接使用printf函数就可以了。
设置好后可以编写主函数了,就以一个闪烁灯+串口发送为例。程序如下:
#include "stm32f4xx.h"
#include
#include "delay.h"
#include "sys.h"
#include "usart.h"
#define LED0 PGout(13)
#define LED1 PGout(14)
void LED_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
        
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);          //??PE????
         
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13|GPIO_Pin_14;                                   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;                   //????
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;             //IO????50MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL;
GPIO_Init(GPIOG, &GPIO_InitStructure);                                          //?????????GPIOB.5
         
GPIO_ResetBits(GPIOG,GPIO_Pin_13);                                                       //PE ???
GPIO_ResetBits(GPIOG,GPIO_Pin_14);         
}
int main(void)
{
         delay_init();
         LED_Init();
         uart_init(9600);
while (1)
  {
                   LED0=1;                                                  
                   LED1=1;
                   delay_ms(500);
                   LED0=0;                                                  
                   LED1=0;
                   delay_ms(500);
                   printf("hellostm32f429\r\n");
  }
}
#define LED0 PGout(13),使用了位带操作,为了方便对引脚的操作,但是对引脚的初始化工作还是需要的。
在使用串口,延时函数前要先对其进行初始化,之后的程序就很简单了。编译下载到板子中测试一下。


附件下载:(注意我使用的是keil 5.0) stm32f429 template.zip (572.17 KB, 下载次数: 59)
此帖出自stm32/stm8论坛

最新回复

非常感谢楼主的中文注释  我没学过STM32一下子就上手了  详情 回复 发表于 2013-12-26 16:13
点赞 关注(1)
 

回复
举报

22

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
看来还得自己顶自己呀
此帖出自stm32/stm8论坛
 
 

回复

6040

帖子

204

TA的资源

版主

板凳
 
我也帮你顶顶,不错。
此帖出自stm32/stm8论坛

点评

谢谢 谢谢  详情 回复 发表于 2013-12-15 21:45
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳lcofjp 的帖子

谢谢 谢谢
此帖出自stm32/stm8论坛
 
 
 

回复

1453

帖子

18

TA的资源

纯净的硅(高级)

5
 
楼主动作够快
(聊咋咧!)
此帖出自stm32/stm8论坛

点评

这芯片太强大了,要走的路还很长  详情 回复 发表于 2013-12-16 15:22
 
个人签名http://weibo.com/u/1391449055
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼sacq 的帖子

这芯片太强大了,要走的路还很长
此帖出自stm32/stm8论坛
 
 
 

回复

193

帖子

3

TA的资源

一粒金砂(高级)

7
 
我在思恋原子的SYS哈哈 ,,,这下看到确实可以所以我果断去移植一个
此帖出自stm32/stm8论坛
 
 
 

回复

193

帖子

3

TA的资源

一粒金砂(高级)

8
 
我直接烧写你的代码都不行呀:mad:
此帖出自stm32/stm8论坛

点评

不可以么 我试了两个板子都没问题呀  详情 回复 发表于 2013-12-23 13:33
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

9
 
jsxykj1 发表于 2013-12-23 09:58
我直接烧写你的代码都不行呀

不可以么   我试了两个板子都没问题呀
此帖出自stm32/stm8论坛

点评

我早上调试成功了,不知道为什么我直接用你的SYS.H和DELAY.H就好了  详情 回复 发表于 2013-12-23 14:26
 
 
 

回复

193

帖子

3

TA的资源

一粒金砂(高级)

10
 
qiaoyang123 发表于 2013-12-23 13:33
不可以么   我试了两个板子都没问题呀

我早上调试成功了,不知道为什么我直接用你的SYS.H和DELAY.H就好了
此帖出自stm32/stm8论坛

点评

你今年本命年么?  详情 回复 发表于 2013-12-23 20:30
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

11
 
jsxykj1 发表于 2013-12-23 14:26
我早上调试成功了,不知道为什么我直接用你的SYS.H和DELAY.H就好了

你今年本命年么?
此帖出自stm32/stm8论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

12
 
非常感谢楼主的中文注释  我没学过STM32一下子就上手了
此帖出自stm32/stm8论坛

点评

那中文注释不是我写的 是正点原子写的 我只是因用人家的程序  详情 回复 发表于 2013-12-26 16:23
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

13
 
115272264 发表于 2013-12-26 16:13
非常感谢楼主的中文注释  我没学过STM32一下子就上手了

那中文注释不是我写的 是正点原子写的 我只是因用人家的程序
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表