两个stm32通信 ip4只能有一个吗?

新手求教STM32,有必要买个400多的板子吗?_stm32吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:23,423贴子:
新手求教STM32,有必要买个400多的板子吗?收藏
本人学生党(你懂的),学习了51打算接下来学习一下32 ,400多的板子有必要吗?200的可以不,主要有什么区别?
请教一下吧友们 ,还请吧友们指教
针对STM32应用中的重点和难点部分,触摸屏,UC/OS及文件系统,PID控制,CAN总线;提供项目开发及技术培训.
我也是学生,买的七八十的。慢慢来。外围配件模块,一个一个来吧,缺什么买什么。
买mini最好,价格还不错,淘宝上一块别家的mini80,加上tft一起160,但是没有多少资料,建议你购买野火mini,价格250,但是有文档,资料,源码和视频。需要找我:TB店铺:远洋电子工作室 技术支持
我们老师讲,100块的足够学习了(高手当我没说)
主要是文档,不过很多都是开源的
咸鱼买二手的
太贵了,没必要
最小系统就好啦
「玩物尚智」!stm32 开发板-京东购数码,大牌相机24期免息!二合一低至999!潮品数码任你挑!京东购物商城,潮流汇聚,时尚数码,超值优惠,品牌直营,极速配送!
买块原子的mini就可以了,想要更便宜也可以买二手的,没必要买新的。最简单的途径就是去找你们学长买,现在毕业季,很便宜就能买到
我初学还是买10多块的最小系统板
学校老师教学用的130左右的板子
我买了个七十多块钱的,照样好用的一B
自己画一个板子吧,保证你的硬件软件学的都可以
就楼主目前水平,难
可以买F7探索板 300多点
淘宝买可能会有假货,之前有朋友遇到过PS:我会告诉你ST社区会不定期送板子么
板子无所谓,主要资料要多要全要易懂
以后你就知道随便买一个板子都不止400多
可以买仿原子的,这样源码可以用,还可以节约成本
好的,多谢
买个核心板即可
楼主应该买个几十块钱的练练手,四百多的有好些功能你就用不上,等到你练习的牛逼了你再买个功能多的
正点原子的,miniV3,100多
几十的就可以,买那么贵干嘛
自己画一个吧
我的原子板子卖给你吧
买芯片自己焊我也是刚开始学,就是这么玩的。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或stm32自己总结如何正确创建一个工程
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
stm32自己总结如何正确创建一个工程
1、建立好文件夹,文件夹中有相应的库函数和头文件等等
以上通过我的G盘里面的建立工程模板解压即可得到
2、通过keil创建test_creat.uvproj到以目录
选择完芯片以后,弹出窗口一定要选择&否&
3、添加文件,只用添加C文件进去
添加完成以后会看到:
4、头文件路径的添加
stm32f10x_it.h
,stm32f10x.h,
stm32f10x_conf.h
,core_cm3.h,
system_stm32f10x.h
主要添加以上的头文件位置还有各种ppp外设头文件的位置也就是src文件夹
5.编译会出现的问题及解决方法
1、去掉STM32F10X_HD,USE_STDPERIPH_DRIVER
2、去掉conf.h里面的type.h
3、去掉主函数里面的ppp。h的各种包含
4,在stm32里面去掉hse的宏定义511
6.我把这个建立工程模板打包,以后就用这个直接添加外围设备的C就行了,因为头文件的地址已经制定好了,到主函数里面包含就行了,这样就方便每次建立工程写程序了
7、这个只是自己建立的步骤,其实懂了这个流程之后,就可以用别人的模板了,很容易根据自己的意愿来修改,
所以主要还是要懂这么一个建立工程的过程
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved后使用快捷导航没有帐号?
查看: 1303|回复: 2
几乎一样的代码 一个工作 一个没反应
在线时间70 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 30, 距离下一级还需 170 积分
一粒金砂(中级), 积分 30, 距离下一级还需 170 积分
最近在研究串口通讯 这个代码折磨我一下午了
#include &stm32f10x_lib.h&
/******************************** 变量定义 ---------------------------------------------------------*/
GPIO_InitTypeDef GPIO_InitS
USART_InitTypeDef USART_InitS
ErrorStatus HSEStartUpS
/*********************************声明函数 -----------------------------------------------*/
void RCC_Configuration(void);
void NVIC_Configuration(void);
void USART_Configuration(void);
void Delay(vu32 nCount);
/*******************************************************************************
*& && && && && && && && && &配置RCC
*******************************************************************************/
void RCC_Configuration(void)
//复位RCC外部设备寄存器到默认值
&&RCC_DeInit();
&&//打开外部高速晶振
&&RCC_HSEConfig(RCC_HSE_ON);
& &//等待外部高速时钟准备好
&&HSEStartUpStatus = RCC_WaitForHSEStartUp();
&&if(HSEStartUpStatus == SUCCESS)& &//外部高速时钟已经准别好
&&{& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && &&&
& & //开启FLASH的预取功能
& & FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
& & //FLASH延迟2个周期
& & FLASH_SetLatency(FLASH_Latency_2);
&&//配置AHB(HCLK)时钟=SYSCLK
& & RCC_HCLKConfig(RCC_SYSCLK_Div1);&&
& &//配置APB2(PCLK2)钟=AHB时钟
& & RCC_PCLK2Config(RCC_HCLK_Div1);
& & //配置APB1(PCLK1)钟=AHB 1/2时钟
& & RCC_PCLK1Config(RCC_HCLK_Div2);
& &&&//配置PLL时钟 == 外部高速晶体时钟*9&&PLLCLK = 8MHz * 9 = 72 MHz
& & RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
& & //使能PLL时钟
& & RCC_PLLCmd(ENABLE);
& &//等待PLL时钟就绪
& & while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
&&//配置系统时钟 = PLL时钟
& & RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
& &//检查PLL时钟是否作为系统时钟
& & while(RCC_GetSYSCLKSource() != 0x08)
/*******************************************************************************
*& && && && && && && && && &&&NVIC配置函数
*******************************************************************************/
void NVIC_Configuration(void)
#ifdef&&VECT_TAB_RAM&&
&&/* Set the Vector Table base location at 0x */
&&NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else&&/* VECT_TAB_FLASH&&*/
&&/* Set the Vector Table base location at 0x */
&&NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);& &
void USART_Configuration(void)
& & & & USART_InitStructure.USART_BaudRate = 9600;
& & & & USART_InitStructure.USART_WordLength = USART_WordLength_8b;
& & & & USART_InitStructure.USART_StopBits = USART_StopBits_1;
& & & & USART_InitStructure.USART_Parity = USART_Parity_No;
& & & & USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N
& & & & USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
& & & & USART_Init(USART1,&USART_InitStructure);
void USART1_Putc(char c)
& & & & USART_SendData(USART1,c);
//& & & & while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
/*******************************************************************************
*& && && && && && && && && && &延时函数
*******************************************************************************/
void Delay(vu32 nCount)
&&for(; nCount != 0; nCount--);
#ifdef&&DEBUG
/*******************************************************************************
* Function Name&&: assert_failed
* Description& & : Reports the name of the source file and the source line number
*& && && && && && &where the assert_param error has occurred.
* Input& && && & : - file: pointer to the source file name
*& && && && && && &- line: assert_param error line source number
* Output& && && &: None
* Return& && && &: None
*******************************************************************************/
void assert_failed(u8* file, u32 line)
&&/* User can add his own implementation to report the file name and line number,
& &&&ex: printf(&Wrong parameters value: file %s on line %d\r\n&, file, line) */
&&/* Infinite loop */
&&while (1)
/*******************************************************************************
& && && && && && && && && && && & 主函数
*******************************************************************************/
int main(void)
#ifdef DEBUG
&&debug();
&&RCC_Configuration(); //系统时钟配置函数& &
&&//NVIC_Configuration();& & & &&&//NVIC配置函数
&&USART_Configuration();
&&//使能APB2总线外设时钟
&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_USART1, ENABLE);
&&//GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);&&//关闭调试 端口重新映射&&使用仿真器调试时,不能用此语
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;&&//配置成推挽式输出
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出模式下 I/O输出速度 50M HZ
&&GPIO_Init(GPIOA, &GPIO_InitStructure);&&//初始化PA口
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
&&GPIO_Init(GPIOA, &GPIO_InitStructure);
&&USART_Cmd(USART1,ENABLE);
& & & & USART_SendData(USART1, 0x98);& & & & & & & &
这是我编的 不能工作
/* 头文件& & -----------------------------------------------------------------*/
#include &stm32f10x_lib.h&
/* 自定义函数声明& && &-------------------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void USART_Configuration(void);
/*******************************************************************************
* 函数名&&& & & & : main
* 函数描述& & & & & & : 主函数
* 输入参数& & : 无
* 输出结果& & : 无
* 返回值& && &: 无
*******************************************************************************/
int main(void)
& & vu16 i = 0;& & & &
& & /* 设置系统时钟 */
& & RCC_Configuration();
& & /* 设置GPIO端口 */
& & GPIO_Configuration();
& & /* 设置USART */
& & USART_Configuration();
&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_USART1, ENABLE);
&&//GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);&&//关闭调试 端口重新映射&&使用仿真器调试时,不能用此语
&&USART_Cmd(USART1,ENABLE);
& & & & USART_SendData(USART1, 0x98);& & & & & & & &
/*******************************************************************************
* 函数名 & & & & : RCC_Configuration
* 函数描述&&& & & & : 设置系统各部分时钟
* 输入参数&&& & & & : 无
* 输出结果&&& & & & : 无
* 返回值& & & & & & : 无
*******************************************************************************/
void RCC_Configuration(void)
& & /* 定义枚举类型变量 HSEStartUpStatus */
& & ErrorStatus HSEStartUpS
& & /* 复位系统时钟设置*/
& & RCC_DeInit();
& & /* 开启HSE*/
& & RCC_HSEConfig(RCC_HSE_ON);
& & /* 等待HSE起振并稳定*/
& & HSEStartUpStatus = RCC_WaitForHSEStartUp();
& & /* 判断HSE起是否振成功,是则进入if()内部 */
& & if(HSEStartUpStatus == SUCCESS)
& & & & & & /* 选择HCLK(AHB)时钟源为SYSCLK 1分频 */
& & & & & & RCC_HCLKConfig(RCC_SYSCLK_Div1);
& & & & & & /* 选择PCLK2时钟源为 HCLK(AHB) 1分频 */
& & & & & & RCC_PCLK2Config(RCC_HCLK_Div1);
& & & & & & /* 选择PCLK1时钟源为 HCLK(AHB) 2分频 */
& & & & & & RCC_PCLK1Config(RCC_HCLK_Div2);
& & & & & & /* 设置FLASH延时周期数为2 */
& & & & & & FLASH_SetLatency(FLASH_Latency_2);
& & & & & & /* 使能FLASH预取缓存 */
& & & & & & FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
& & & & & & /* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则PLL输出频率为 8MHz * 9 = 72MHz
& && &&&*/
& & & & & & RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
& & & & & & /* 使能PLL */
& & & & & & RCC_PLLCmd(ENABLE);
& & & & & & /* 等待PLL输出稳定 */
& & & & & & while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
& & & & & & /* 选择SYSCLK时钟源为PLL */
& & & & & & RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
& & & & & & /* 等待PLL成为SYSCLK时钟源 */
& & & & & & while(RCC_GetSYSCLKSource() != 0x08);
& & /* 开启USART1和GPIOA时钟 */
& & RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_GPIOA , ENABLE);
/*******************************************************************************
* 函数名&&& & & & & & & & : GPIO_Configuration
* 函数描述& & & & & & : 设置各GPIO端口功能
* 输入参数& && &: 无
* 输出结果& && &: 无
* 返回值& && &&&: 无
*******************************************************************************/
void GPIO_Configuration(void)
& & /* 定义 GPIO 初始化结构体 GPIO_InitStructure */
& & GPIO_InitTypeDef GPIO_InitS
& & /* 设置USART1的Tx脚(PA.9)为第二功能推挽输出模式 */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
& & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & GPIO_Init(GPIOA , &GPIO_InitStructure);
& & /* 设置USART1的Rx脚(PA.10)为浮空输入脚 */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
& & GPIO_Init(GPIOA , &GPIO_InitStructure);
/*******************************************************************************
* 函数名&&& & & & & & & & : USART_Configuration
* 函数描述& & & & & & : 设置USART1
* 输入参数& && &: None
* 输出结果& && &: None
* 返回值& && &&&: None
*******************************************************************************/
void USART_Configuration(void)
& & /* 定义USART初始化结构体 USART_InitStructure */
& & USART_InitTypeDef USART_InitS
& & /*& & & &
& & *& & & & 波特率为9600bps
& & *& & & & 8位数据长度
& & *& & & & 1个停止位,无校验
& & *& & & & 禁用硬件流控制
& & *& & & & 禁止USART时钟
& & *& & & & 时钟极性低
& & *& & & & 在第2个边沿捕获数据
& & *& & & & 最后一位数据的时钟脉冲不从 SCLK 输出
& & USART_InitStructure.USART_BaudRate = 9600;
& & USART_InitStructure.USART_WordLength = USART_WordLength_8b;
& & USART_InitStructure.USART_StopBits = USART_StopBits_1;
& & USART_InitStructure.USART_Parity = USART_Parity_N
& & USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N
& & USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
& & USART_Init(USART1 , &USART_InitStructure);
& & /* 使能USART1 */
& & //USART_Cmd(USART1 , ENABLE);
这是开发板给的例程 可以正常工作
是不是我太粗心了 总之查不出啥问题 高手们帮帮忙啊
&&&&&&&&&&
在线时间523 小时
威望2757分
芯币7160枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 2757, 距离下一级还需 743 积分
五彩晶圆(初级), 积分 2757, 距离下一级还需 743 积分
你指的不能工作是编译器已经通过了?下载后工作结果不一样?
工程 = 数学+物理+经济
在线时间70 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 30, 距离下一级还需 170 积分
一粒金砂(中级), 积分 30, 距离下一级还需 170 积分
嗯 编译都通过了的
荣誉会员勋章
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
Powered by
逛了这许久,何不进去瞧瞧?

我要回帖

更多关于 两个stm32串口通信 的文章

 

随机推荐