OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4005|回复: 1

8路磁导航传感器IO端口检测

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-10-8
在线时间
0 小时
发表于 2016-10-8 23:25:19 | 显示全部楼层 |阅读模式
1、主程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
//#include "beep.h"
#include "key.h"
#include "exti.h"
//#include "iwdg.h"
//#include "pwm.h"
#include "magnetic.h"
#include "stdio.h"
#include "timer.h"

extern int a[9];
int main(void)
{
        delay_init(168);                //延时初始化
        uart_init(115200);        //串口初始化波特率为115200
        magnetic_IO_Init();
        SystemInit();
        while(1)
        {
                if(SW1==0)
                {printf("\r\nSW1==%d:\r\n",SW1);
                delay_ms(100);}
                        if(SW2==0)
                        {printf("\r\nSW2==%d:\r\n",SW2);
                        delay_ms(100);}
                                if(SW3==0)
                                {printf("\r\nSW3==%d:\r\n",SW3);
                                delay_ms(100);}
                                        if(SW4==0)
                                        {printf("\r\nSW4==%d:\r\n",SW4);
                                        delay_ms(100);}
                                                if(SW5==0)
                                                {printf("\r\nSW5==%d:\r\n",SW5);
                                                delay_ms(100);}
                                                        if(SW6==0)
                                                        {printf("\r\nSW6==%d:\r\n",SW6);
                                                        delay_ms(100);}
                                                                if(SW7==0)
                                                                        {printf("\r\nSW7==%d:\r\n",SW7);
                                                                        delay_ms(100);}
                                                                                if(SW8==0)
                                                                                        {printf("\r\nSW8==%d:\r\n",SW8);
                                                                                        delay_ms(100);}
               
        }
}
2、磁导航端口配置
#ifndef __MAGNETIC_H
#define __MAGNETIC_H
#include "sys.h"



//位带操作 读取磁导航IO口数据
#define SW1 PBin(1)
#define SW2 PAin(4)
#define SW3 PCin(5)
#define SW4 PAin(12)
#define SW5 PAin(11)
#define SW6 PAin(6)
#define SW7 PCin(4)
#define SW8 PCin(1)


//初始化
void magnetic_IO_Init(void);
//float magnetic_Init(float p);

#endif

#include "magnetic.h"
#include "stm32f4xx_rcc.h"
#include "delay.h"
//磁导航传感器端口初始化函数
void magnetic_IO_Init(void)
{
        GPIO_InitTypeDef GPIO_Initstruct;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC,ENABLE);
        //GPIOA-4 6 11 12 端口初始化
       
        GPIO_Initstruct.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_11|GPIO_Pin_12;
        GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Initstruct.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Initstruct.GPIO_Speed=GPIO_Speed_100MHz;
       
        GPIO_Init(GPIOA,&GPIO_Initstruct);
        //GPIOB-1 端口初始化
        GPIO_Initstruct.GPIO_Pin=GPIO_Pin_1;
        GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Initstruct.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Initstruct.GPIO_Speed=GPIO_Speed_100MHz;
       
        GPIO_Init(GPIOB,&GPIO_Initstruct);
       
        //GPIOC-1 4 5 端口初始化
        GPIO_Initstruct.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5;
        GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Initstruct.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_Initstruct.GPIO_Speed=GPIO_Speed_100MHz;
       
        GPIO_Init(GPIOC,&GPIO_Initstruct);

}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5203
金钱
5203
注册时间
2016-7-21
在线时间
1149 小时
发表于 2017-5-3 15:41:56 | 显示全部楼层
多谢分享,请教楼主一个问题,我是用的16点的磁导航传感器3CM的磁条该怎样计算小车的行驶呢?
@野生程序员
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 17:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表