打印
[有奖问答]

盖楼送板子活动再次开始,目标楼层至5000层!详情请入内!

[复制链接]
楼主: 烈火狂龙
手机看帖
扫描二维码
随时随地手机跟帖
441
void CAN_Interrupt(void)
{
CAN_InitTypeDef        CAN_InitStructure;
CAN_FilterInitTypeDef  CAN_FilterInitStructure;
// CanTxMsg TxMessage;

/* CAN register init */
CAN_DeInit(CAN1);
CAN_StructInit(&CAN_InitStructure);

使用特权

评论回复
442
lanseshuijing| | 2014-1-22 08:28 | 只看该作者
/* CAN cell init */
/* CAN cell init */
CAN_InitStructure.CAN_TTCM=DISABLE;  //时间触发
CAN_InitStructure.CAN_ABOM=DISABLE;  //自动离线管理
CAN_InitStructure.CAN_AWUM=DISABLE;  //自动唤醒
CAN_InitStructure.CAN_NART=DISABLE;  //ENABLE:错误不自动重传 DISABLE:重传
CAN_InitStructure.CAN_RFLM=DISABLE;
CAN_InitStructure.CAN_TXFP=DISABLE;
CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;  //CAN_Mode_LoopBack,CAN_Mode_Normal
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;   //1-4
CAN_InitStructure.CAN_BS1=CAN_BS1_5tq;   //1-16
CAN_InitStructure.CAN_BS2=CAN_BS2_3tq;   //1-8
CAN_InitStructure.CAN_Prescaler=4;    //波特率为 36/(4*(1+5+3))=1000k
CAN_Init(CAN1,&CAN_InitStructure);

使用特权

评论回复
443
lanseshuijing| | 2014-1-22 08:28 | 只看该作者
/* CAN 过滤器设置 */
CAN_FilterInitStructure.CAN_FilterNumber=0;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);

使用特权

评论回复
444
lanseshuijing| | 2014-1-22 08:28 | 只看该作者
/* transmit */
  TxMessage.StdId=pTransmitBuf ->StdId;//用来设定标准标识符(0-0x7ff,11位)
  //TxMessage.ExtId=pTransmitBuf ->ExtId;
  TxMessage.RTR=  pTransmitBuf ->RTR;//设置RTR位为数据帧
  TxMessage.IDE=  pTransmitBuf ->IDE;//标识符扩展位,为标准帧
  TxMessage.DLC=  pTransmitBuf ->DLC;//设置数据长度
  //根据DLC字段的值,将有效数据拷贝到发送数据寄存器
  memcpy(TxMessage.Data, pTransmitBuf ->Data,pTransmitBuf ->DLC);
  TransmitMailbox = CAN_Transmit(CAN1,&TxMessage);
  TransmitMailbox=TransmitMailbox;//加上这句话就是防止编译器产生警告
  return 1;
}

使用特权

评论回复
445
lanseshuijing| | 2014-1-22 08:29 | 只看该作者
//STM32F103RBT6有三个通用定时器,定时器2、3、4;操作基本一致
#include "STM32Lib\\stm32f10x.h"

//各个内部硬件模块的配置函数
extern void GPIO_Configuration(void);   //GPIO
extern void RCC_Configuration(void);   //RCC
extern void USART_Configuration(void);   //串口
extern void NVIC_Configuration(void);   //NVIC
extern void TIM2_Configuration(void);
extern void TIM3_Configuration(u16 p,u16 psc);
extern void TIM4_Configuration(void);
extern void TIM_Configuration(u16 p,u16 psc);
extern void CAN_Configuration(void);
extern void CAN_Interrupt(void);
/*******************************

使用特权

评论回复
446
lanseshuijing| | 2014-1-22 09:00 | 只看该作者
还需要努力啊

使用特权

评论回复
447
lanseshuijing| | 2014-1-22 09:00 | 只看该作者
**函数名:ChipHalInit()
**功能:片内硬件初始化
*******************************/
void  ChipHalInit(void)
{
//初始化时钟源
RCC_Configuration();

//初始化GPIO
GPIO_Configuration();

//初始化中断源
NVIC_Configuration();
//初始化串口
USART_Configuration();

使用特权

评论回复
448
lanseshuijing| | 2014-1-22 09:12 | 只看该作者
支持烈火大哥! 超越梦想一起飞

使用特权

评论回复
449
lanseshuijing| | 2014-1-22 09:40 | 只看该作者
怎么还不来人啊

使用特权

评论回复
450
lanseshuijing| | 2014-1-22 09:41 | 只看该作者
再不来人就是我的了啊

使用特权

评论回复
451
lanseshuijing| | 2014-1-22 09:41 | 只看该作者
我要一个人改到500层

使用特权

评论回复
452
lanseshuijing| | 2014-1-22 09:42 | 只看该作者
**就是胜利 已经看到胜利的曙光了

使用特权

评论回复
453
lanseshuijing| | 2014-1-22 09:42 | 只看该作者
千万不要让别人窃取我的劳动成果啊

使用特权

评论回复
454
lanseshuijing| | 2014-1-22 09:43 | 只看该作者
最后的四十层进军

使用特权

评论回复
455
lanseshuijing| | 2014-1-22 09:43 | 只看该作者
劳动人民最光荣

使用特权

评论回复
456
lanseshuijing| | 2014-1-22 09:44 | 只看该作者
悄悄的进村花姑娘的不要

使用特权

评论回复
457
lanseshuijing| | 2014-1-22 09:52 | 只看该作者
STM32 关于GPIO的问题集锦
1、关于GPIO

问:STM32的IO口初始化为输入浮空,那管脚是高电平还是低电平呢?

答:既不是高电平也不是低电平,悬空的意思是没有使用的状态。


使用特权

评论回复
458
lanseshuijing| | 2014-1-22 09:53 | 只看该作者
2、有关stm32f103 端口复用的问题?

问:在学习GPIO时,遇到到端口复用问题一直不能明白,我举个例子:
PB6 PB7默认情况下是做普通IO使用的,当我想用I2C1是,我开启RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
当我要使用I2C1的重定义时,我要打开,
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
这样理解对不对?

有的人说当用的芯片自带的外设时都要打开 AFIO 时钟,但我用到usart1时没有打开AFIO 时钟,照样能用usart,这是为什么?
总之问这个问题的根本原因是AFIO的时钟要在什么情况下打开?


答:1、串口必须要打开AFIO时钟,不然不能工作。可能你的初始化函数、RCC配置中有开启的地方。 2、AFIO在你需要使用某一模块时,比如你想使用GPIOC,这个时候要打开GPIOC模块的时钟。 3、关闭I2C而不是关闭I2C模块的总线,如果你想使用普通模式,就要把I2C模块关闭以后,重新配置GPIOB模块,就可以正常使用了。

使用特权

评论回复
459
lanseshuijing| | 2014-1-22 09:53 | 只看该作者
3、AFIO重映射的操作步骤是什么?

答:使能被重新映射到的I/O端口时钟使能被重新映射的外设时钟使能AFIO功能的时钟 (勿忘!) 进行重映射

使用特权

评论回复
460
lanseshuijing| | 2014-1-22 09:54 | 只看该作者
4、配置IO口的频率问题



问:配置IO口的频率时,为什么只给一个IO口配置?

答:GPIO_InitStructure.GPIO_Speed 这个结构体的成员始终为GPIO_Speed_50MHz 配置其他io口时也默认用50MHz 。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则