范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

STM32零基础入门学习(第二阶段)CAN通信实验代码

  //can1.c文件 /**   * @file    can1.c(can回环实验)   * @author  逗比小憨憨   * @version V1.0   * @date    xxxx-xx-xx   * @brief   CAN驱动   ******************************************************************************   * @attention   *   * 实验平台:STM32F103C8T6   * 编程步骤: 		1.初始化CAN外设、波特率,位的组成 		2.配置筛选器,方便接收数据 		3.发送数据,并接收,使用回环模式测试   * 链接:https://www.ixigua.com/7066265725916152334  */  #include "can1.h" #include "usart.h"   /********************************全局变量定义区 ******************************/ struct CAN_STRUCT my_can_struct; /****************************************************************************/  /********************************静态函数定义区 ******************************/ #if CAN_MODE_CAN_LOOPBACK static void can_gpio_config(void) { 	GPIO_InitTypeDef GPIO_InitStruct;  	RCC_APB2PeriphClockCmd (RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);  	 	GPIO_PinRemapConfig (GPIO_Remap1_CAN1 ,ENABLE); 	 	GPIO_InitStruct.GPIO_Pin = CAN_PIN_TX; 	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; 	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; 	GPIO_Init(CAN_PORT, &GPIO_InitStruct); 	 	GPIO_InitStruct.GPIO_Pin = CAN_PIN_RX; 	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; 	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; 	GPIO_Init(CAN_PORT, &GPIO_InitStruct); } #endif  static void can_mode_config(uint8_t bs1,uint8_t bs2,uint8_t sjw,uint16_t pre)	 { 	CAN_InitTypeDef CAN_InitTypeStruct; 	 	RCC_APB1PeriphClockCmd (RCC_APB1Periph_CAN1, ENABLE); 	CAN_InitTypeStruct.CAN_ABOM = ENABLE; 	CAN_InitTypeStruct.CAN_AWUM = ENABLE; 	CAN_InitTypeStruct.CAN_Mode = CAN_Mode_LoopBack; 	CAN_InitTypeStruct.CAN_NART = ENABLE;  	CAN_InitTypeStruct.CAN_RFLM = DISABLE; 	CAN_InitTypeStruct.CAN_TTCM = DISABLE; 	CAN_InitTypeStruct.CAN_TXFP = DISABLE;  	 	CAN_InitTypeStruct.CAN_BS1 = bs1; 	CAN_InitTypeStruct.CAN_BS2 = bs2; 	CAN_InitTypeStruct.CAN_SJW = sjw; 	CAN_InitTypeStruct.CAN_Prescaler = pre; 	 	CAN_Init(CAN1,&CAN_InitTypeStruct); }  static void can_filter_config(void) { 	CAN_FilterInitTypeDef CAN_FilterInitStruct; 	 	CAN_FilterInitStruct.CAN_FilterActivation = ENABLE; 	#if CAN_SELECTION_FIFO_0 	CAN_FilterInitStruct.CAN_FilterFIFOAssignment = CAN_Filter_FIFO0; 	#else 	CAN_FilterInitStruct.CAN_FilterFIFOAssignment = CAN_Filter_FIFO1; 	#endif 	CAN_FilterInitStruct.CAN_FilterNumber = 6; 	CAN_FilterInitStruct.CAN_FilterScale = CAN_FilterScale_32bit; 	CAN_FilterInitStruct.CAN_FilterMode  = CAN_FilterMode_IdMask; 	 	CAN_FilterInitStruct.CAN_FilterIdHigh = ((0x1234<<3 |CAN_Id_Extended |CAN_RTR_Data)&0xFFFF0000)>>16; 	CAN_FilterInitStruct.CAN_FilterIdLow  = ((0x1234<<3 |CAN_Id_Extended |CAN_RTR_Data)&0xFFFF); 	 	CAN_FilterInitStruct.CAN_FilterMaskIdHigh = 0xFFFF; 	CAN_FilterInitStruct.CAN_FilterMaskIdLow  = 0xFFFF;	  	CAN_FilterInit(&CAN_FilterInitStruct); 	#if CAN_SELECTION_FIFO_0 	CAN_ITConfig (CAN1,CAN_IT_FMP0,ENABLE);	 	#else 	CAN_ITConfig (CAN1,CAN_IT_FMP1,ENABLE);	 	#endif }	  static void can_nvic_config(void) { 	NVIC_InitTypeDef NVIC_InitStructure; 	#if CAN_SELECTION_FIFO_0 	NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn; 	#else 	NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX1_IRQn; 	#endif 	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; 	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 	NVIC_Init(&NVIC_InitStructure); 	 } /****************************************************************************/  /********************************中断函数编写区 ******************************/ #if CAN_SELECTION_FIFO_0 void USB_LP_CAN1_RX0_IRQHandler(void) {     if(CAN_GetITStatus(CAN1, CAN_IT_FMP0)  ==  SET)     { 		CAN_Receive(CAN1, CAN_FIFO0, &my_can_struct.RxMessage);  		     }     CAN_ClearITPendingBit(CAN1, CAN_IT_FMP0); } #else void CAN1_RX1_IRQHandler(void) {     if(CAN_GetITStatus(CAN1, CAN_IT_FMP1)  ==  SET)     { 		CAN_Receive(CAN1, CAN_FIFO1, &my_can_struct.RxMessage);         }     CAN_ClearITPendingBit(CAN1, CAN_IT_FMP1);	 } #endif  /****************************************************************************/  /********************************外部函数编写区 ******************************/ void my_can_transmit_data(uint8_t *dat,uint8_t length) { 	uint8_t i = 0; 	CanTxMsg can_transmit_data; 	can_transmit_data.StdId = 0; 	can_transmit_data.ExtId = 0x1234; 	can_transmit_data.RTR = CAN_RTR_DATA; 	can_transmit_data.IDE = CAN_Id_Extended; 	 	can_transmit_data.DLC = length; 	for(i = 0; i < length; i++) 	{ 		can_transmit_data.Data[i] = dat[i]; 	} 	CAN_Transmit(CAN1,&can_transmit_data); }   void my_can_init(void) { 	#if CAN_MODE_CAN_LOOPBACK 	can_gpio_config(); 	#endif 	can_mode_config(CAN_BS1_5tq, CAN_BS2_3tq, CAN_SJW_2tq, 4);     can_nvic_config(); 	can_filter_config(); }  void my_can_receive_test(void) { 	uint8_t count = 0; 	uint8_t length = my_can_struct.RxMessage.DLC; 	printf(" receive data:%dbyte 	 ",length); 	for(count = 0; count < length; count++) 		printf("%d ",my_can_struct.RxMessage.Data[count]); 	printf("	 "); } /****************************************************************************/  //can1.h文件 /**   * @file    can1.h(can回环实验)   * @author  逗比小憨憨   * @version V1.0   * @date    xxxx-xx-xx   * @brief   STM32的CAN驱动程序(库函数版本)   ******************************************************************************   * @attention   *   * 实验平台:STM32F103C8T6   */  #ifndef __can1_H #define __can1_H #include "stm32f10x.h"  #define CAN_SELECTION_FIFO_0  0  #define CAN_MODE_CAN_LOOPBACK 0  #define CAN_PIN_RX GPIO_Pin_8 #define CAN_PIN_TX GPIO_Pin_9 #define CAN_PORT   GPIOB  typedef struct CAN_STRUCT{ 	CanRxMsg RxMessage; 	CanTxMsg TxMessage; }CAN_STRUCT; extern struct CAN_STRUCT my_can_struct;  static void can_gpio_config(void); static void can_filter_config(void); static void can_nvic_config(void); static void can_mode_config(uint8_t bs1,uint8_t bs2,uint8_t sjw,uint16_t pre);  void my_can_init(void); void my_can_transmit_data(uint8_t *dat,uint8_t length); void my_can_receive_test(void);  #endif    欢迎关注逗比小憨憨

东丽开发出支持快充的纯电动车零部件材料,充电时间可减半日经中文网12月29日消息,总部位于日本的高科技跨国企业东丽开发出支持快速充电的汽车部件材料,纯电动汽车充电时间可比过去缩短一半。据介绍,这是一种即使在高电压下也不破损的纯电动汽车站群服务器哪些人群会用?为什么会有人选择站群服务器?所谓的站群,就是单独为一个网站或多个网站配置独立的IP,以至于提高搜索引擎多网站的友爱度,提高网站文章的收录以及网站的权重,这也是网站SEO优化的重要一步。多IP的优势每个站点绑定美籍华人王晓麟国内创业,给家人发百万薪资,却卷走66亿国内投资自国内汽车领域发展至今,出现了许多以造车的借口骗钱的人,贾跃亭就是其中的代表之一。而除了他之外,还有一位美籍华人使用这种手段,卷走了66亿的国内投资。那么,他是怎么做到的呢?上面提用沐神的方法阅读PyTorchFX论文作者丨BBuf来源丨GiantPandaCV编辑丨极市平台torch。fx对于PyTorch来说确实是一个比较好的工作,因为它消除了一些动态图和静态图的Gap。比如在图改写方面,t入坑小米全屋智能家居5年,给大家分享下我的使用体验从2016年入坑小米智能家居,足足过了5年,这期间,家里也是不断在添置智能家居。因为房子是之前就装修好了的,不想重新花钱花钱装修,所以我家更多是后面慢慢实现的全屋智能。这也是为什么国家移民管理局首届科技创新应用大赛获奖情况揭晓中国青年报客户端讯(中青报中青网记者何春中)近日,国家移民管理局首届科技创新应用大赛获奖情况揭晓。港口通微信小程序等5个项目荣获一等奖,空地一体化应急通信保障体系等10个项目荣获二pi没有上主网的原因第一我们先了解pi是什么pi币是类似与比特币的一种加密的虚拟货币,它是由由斯坦福大学博士团队首创的社交区块链项目,目前该项目已经在275个以上的国家或地区获得了2100多万的用户。过去养猪又脏又累,现在互联网的大佬们纷纷跑去养猪了文小代以前孩子不争气时,父母总会说再不努力,回头养猪去吧。养猪脏养猪累,养猪没出息。但现实是养猪的人发家致富了,光鲜亮丽的互联网大厂,现在也纷纷进军了养猪行业。不过互联网大佬们的养高亮度显示器会更好一些吗说起高亮度,便会想起低亮度,从而想起白天和黑夜,所以为什么白天是上班工作,经营创业,学习传播等等,黑夜是休息睡眠,补充大脑呢。所以白天能做的往往比晚上做的东西要多得多。高亮度的便携计算摄影对标iPhone,小米12Pro底气从何而来?12月28日,小米12系列正式发布。作为跨入2022年,最受关注的安卓旗舰,小米12Pro首发索尼IMX707大底传感器,提升暗光环境下HDR能力,更号称安卓最快拍照速度,还有万物OLED屏真的远不如LCD屏手机?真是这样?仔细分析了OLED的优缺点买手机到底买OLED还是LCD屏的手机?OLED屏的手机寿命真的远不如LCD吗?小编仔细给大家分析以下OLED屏的优缺点。OLED屏有着色彩鲜艳功耗低的优点。OLED屏的色彩是更加
孟晚舟释放与否有重大意义?被无耻政治操弄的华为何时能得到清白最新一波中美贸易战已经经历了美国的两任总统,但仍然看不到有抵达终点的迹象。中兴华为字节跳动,都是被卷入其中的中国企业。其中尤以华为高管孟晚舟事件最为引人注目,从2018年底被扣之日把我关注的4只基金进行了对比,我发现了几个重点今天万万没想到下午逆势反转了。美团竟然在反垄断的影响下继续上涨,这和之前的阿里巴巴一个意思,利空出尽就是利好,不过后续还没出来。现在比较尴尬的是腾讯,也被反垄断影响着不上不下。长期AppleWatch6SE上架苹果官翻商城,价格只要八折近日,苹果官网官方翻新页面上架了去年新推出的AppleWatch6SE设备,相比官方全新设备要便宜不少。从官方翻新页面了解到,AppleWatch6的官翻价格最低为2699元,Ap特斯拉车顶维权女孩必将被载入数据资源立法的史册2021年4月19日,上海车展,一个身躯弱小的女子,穿了件白底红字的T恤,站在车顶,戳穿了科技巨头们的皇帝新装。特斯拉车顶维权事件,很多人没看清其本质,包括一些重量级的媒体(也许是特斯拉公布了数据,为什么反而引来更多的质疑?文连线出行,作者周雄飞,编辑子夜特斯拉不需要公关。本周三,高盛前高管GaryBlack在Twitter上以是否考虑雇佣一个公关人员?询问特斯拉CEO埃隆马斯克,后者以专注于产品为理喜马拉雅赴美IPO,2020年营收40。5亿,背后老板身家30亿文AI财经社周享玥编辑孙明屡次被传上市后,喜马拉雅终于IPO之路终于落下实锤。5月1日凌晨,在线音频平台喜马拉雅正式向美国证券交易委员会(SEC)提交了首次公开发行(IPO)申请,腾讯年薪75万的程序员竟比不上深圳普通中学老师的工资?近日,有网友在网络上晒出了一张深圳普通中学老师的工资单,秒杀大多数互联网的程序员们,引起大家的讨论。这个帖子一出,尤其是一想到对方还有寒暑假,让不少程序员羡慕不已虽然比不上208万实现真正全面屏!vivo公开全新折叠机专利近些年,近年各大手机厂商纷纷推出了折叠手机产品,连同今年小米终于将MIXFOLD等量产上市,不少业内人士预测2021年将会有更多的折叠手机新品亮相,折叠机的浪潮似乎越来越大。近日,新款特斯拉ModelS或将开始交付我们在今年2月份报道过特斯拉推出中期改款ModelS的消息,事实上这款车型至今还未交付。近日,在特斯拉2021年第一季度财报会议上,特斯拉表示新款的ModelS即将交付,但交付时间iPhone13mini渲染图6400万对角线双摄,正方形机身支持50W快充大家有没有想过,苹果的小屏幕旗舰手机的终极外观是什么样子的?iPhone12mini作为苹果首款尝试的小尺寸手机,发售之后由于设计方面的原因,消费者并不喜爱,甚至有传闻说iPhon2021年上半年新机大盘点,看看你最中意哪款?细数了一下今年上半年发布的新机!小米小米11,小米11Pro,小米11Ultra,小米10S小米11青春版,小米MIXFOLD红米红米K40,红米K40Pro,红米K40Pro,红