㈠ 请问stm32f103c8t6执行一次乘法(浮点)和一次加法(浮点)的时间各是多少
单条指令执行时间:STM32F10X单片机在主频为72MHz下,C语言程序执行一条指令需要的时间可认为10ns~100ns。
㈡ 求基于stm32f103c8t6的can通信程序
ain() { unsigned int a; RCC_Configuration(); /*初始化 GPIOC时钟*/ // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); USART_Configuration(); Delay(10); CAN_configure(); // LedInit(); while(1) { //CAN_ClearFlag(CAN_FLAG_BOF); GPIO_SetBits(GPIOB,GPIO_Pin_7); Delay(10); GPIO_ResetBits(GPIOB,GPIO_Pin_7); Delay(10); GPIO_SetBits(GPIOB,GPIO_Pin_7); Delay(10); GPIO_ResetBits(GPIOB,GPIO_Pin_7); Delay(10); can_send(0x57); a=can_rev(); USART1_Putc(a); } } -------------------------------------------------------------------------------------------------- #include"stm32f10x_lib.h" void CAN_configure(void) { u8 wrong; CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; GPIO_InitTypeDef GPIO_InitStructure; // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE); // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); // RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE); /* Configure CAN pin: RX */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure CAN pin: TX */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /*can register int*/ CAN_DeInit(); CAN_StructInit(&CAN_InitStructure); /*can cell init*/ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISABLE; CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=5; wrong=CAN_Init(&CAN_InitStructure); while(wrong==CANINITFAILED){} /* CAN filter init */ CAN_FilterInitStructure.CAN_FilterNumber=0; CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;//((u32)0x0020<<21)>>16;//标识符 CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;//(((u32)0x0020<<21)|CAN_ID_STD|CAN_RTR_DATA);// CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;; CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); // CAN_ITConfig(CAN_IT_FMP0, ENABLE); } void can_send(unsigned char data) { CanTxMsg TxMessage; u8 TransmitMailbox = 0; TxMessage.StdId=0x0020;//标识符 TxMessage.RTR=CAN_RTR_DATA; TxMessage.IDE=CAN_ID_STD; TxMessage.DLC=2; TxMessage.Data[0]=data; TxMessage.Data[1]=0xFE; TransmitMailbox=CAN_Transmit(&TxMessage); while(CAN_TransmitStatus(TransmitMailbox) != CANTXOK){}//等待发送 } unsigned char can_rev(void) { CanRxMsg RxMessage; RxMessage.StdId=0x11;//不需要设置 RxMessage.IDE=CAN_ID_STD; RxMessage.DLC=2; RxMessage.Data[0]=0x00; RxMessage.Data[1]=0x00; while (CAN_MessagePending(CAN_FIFO0)==0);//等到接收 CAN_Receive(CAN_FIFO0, &RxMessage); CAN_FIFORelease(CAN_FIFO0); return RxMessage.Data[0]; } ------------------------------------------------------------------------------------------------- void RCC_Configuration(void) { //*** ErrorStatus HSEStartUpStatus; //*** //* system clocks configuration -----------------系统时钟配置-------------------/// //* RCC system reset(for debug purpose) // RCC_DeInit(); //将外设RCC寄存器重设为缺省值 //* Enable HSE * RCC_HSEConfig(RCC_HSE_ON); //开启外部高速晶振(HSE) //* Wait till HSE is ready / HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待HSE起振 if(HSEStartUpStatus == SUCCESS) //若成功起振,(下面为系统总线时钟设置) { //* Enable Prefetch Buffer / FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能FLASH预取指缓存 //* Flash 2 wait state / FLASH_SetLatency(FLASH_Latency_2); //设置FLASH存储器延时时钟周期数(根据不同的系统时钟选取不同的值) //* HCLK = SYSCLK / RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB时钟=72 MHz //* PCLK2 = HCLK/2 / RCC_PCLK2Config(RCC_HCLK_Div2); //设置APB1时钟=36 MHz(APB1时钟最大值) //* PCLK1 = HCLK/2 / RCC_PCLK1Config(RCC_HCLK_Div2); //设置APB2时钟=72 MHz //* Configure ADCCLK such as ADCCLK = PCLK2/2 / // RCC_ADCCLKConfig(RCC_PCLK2_Div2); //RCC_PCLK2_Div2,4,6,8 //* PLLCLK = 8MHz * 9 = 72 MHz / RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //PLL必须在其激活前完成配置(设置PLL时钟源及倍频系数) //* Enable PLL / RCC_PLLCmd(ENABLE); //* Wait till PLL is ready / while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } //* Select PLL as system clock source / RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //* Wait till PLL is used as system clock source / while(RCC_GetSYSCLKSource() != 0x08) { } } //***** RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE); //***/ }
㈢ stm32f103c8t6单片机控制四项步进电机要一个c程序
对步进电机控制精度要求高不高?也就是一步走多少度? 如果不高!用uln2003或者L298N都可以!如果高的话,可以用专用驱动器,这种驱动器控制简单!两个接口一个输入频率信号控制转速,一个输入电平,来控制转动方向!控制起来很简单!颗根据功率来选,便宜的功率不大的比如像3D打印机上的步进电机驱动十几到几十都可以!功率大一点的,价格贵一点!
㈣ STM32F103ZET6和STM32F103C8T6编程不一样吗
不太一样,如STM32F103ZET6芯片使用的工程模板写入STM32F103C8T6,编译会出现错误。
1、修改C/C++选项卡的宏定义
2、启动文件也需要改一下,用MD的(把C/C++选项卡中 STM32F10X_HD,USE_STDPERIPH_DRIVER 修改为 STM32F10X_MD,USE_STDPERIPH_DRIVER)
㈤ 描述STM32F103C8T6每一位代表的含义
编辑 锁定.
STM32F103C8T6是一款基于ARM Cortex-M 内核 STM32 系列的32位的 微控制器 , 程序存储器 容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。.
中文名. STM32F103C8T6. 外文名. STM32F103C8T6. 类 别. 集成电路 (IC)
㈥ stm32f103c8t6用keil编程出现错误
你看一下stm32f10x_conf.h 中的#include "stm32f10x_exti.h" 有没有包含
㈦ 编程时,选择芯片类型stm32f103c6和stm32f103c8有什么区别
区别:
1、设置不同。
keil4软件中,设置Preprocessor Symnols下的Define:
stm32f103c8用:STM32F10X_HD,USE_STDPERIPH_DRIVER驱动,
stm32f103c8用:STM32F10X_HD,USE_STDPERIPH_DRIVER驱动。
2、闪存存储器不同。
stm32f103c6是32kFlash,而stm32f103c8是64kFlash。虽然现在的单片机可以通过外加Flash芯片扩容,但对于运行还是有一定的消耗,所以大一点的Flash,是选择芯片的一个性能标准。
3、启动文件的不同。
stm32f103c8启动文件用startup_stm32f10x_md.s,stm32f103c6启动文件用startup_stm32f10x_ld.s。启动文件一共有三种,小等于32k的用ld.s结尾的驱动文件,大于k小等于64k的用md.s结尾的驱动文件。
㈧ 用USB转TTL线怎么把程序烧写到stm32f103C8T6中
用USB转TTL线把程序烧写到stm32f103C8T6中:
1、TXD-接 PA10/USART1_RX
2、RXD-接 PA9/USART1_TX
3、3V3 GND 接供电,将BOOT0接3V3后再供电,即可进入下载模式。
写入程序成功后,将BOO0与BOOT1均置为0。
(8)stm32f103c8t6编程扩展阅读:
程序烧写的分类以及注意事项:
MCU类可烧录IC
MCU类可烧录IC,目前市场上有很多单芯片控制器(SINGLE MCU)可以通过配套的烧录器进行一次或多次资料烧写。通常仅能烧录一次的MCU被叫做OTPMCU(英文即:ONE TIME PROGRAMBLE MCU),与之相对的是MTP MCU(英文是MULTI TIME PROGRAMBLE MCU)就是可多次烧录的MCU。
OTP MCU通常由生产者在产品装配前通过配套的烧录器一次性把资料烧入,该类IC一经烧录,烧入的资料将无法再次改变
MTP MCU,有别于OTP MCU,本类IC 通过配套的烧录器可以多次烧录,擦写,有的内建FLASHMCU甚至可以烧录不小于10万次。
存储类可烧录IC
存储类可烧录IC:门类众多,如EPROM、EEPROM、NOR FLASH、SPROM、NAND FLASH等等。
EPROM、NOR FLASH、EEPROM、SPROM主要用于存放我们的数据资料或程式,我们已经司空见惯了,跟生产NAND FLASH的厂家比起来可以说生产厂家几乎遍地都是,市面上有相当多的万用烧写器可以把资料烧写进这些IC。
NAND FLASH只有三星等几个生产厂家生产,目前广泛用于U盘、MP3、MP4、ELA和电子词典上。
㈨ stm32f103c8t6 怎么烧写程序 方法与步骤
1、 首先安装ST官方串口下载软件,
Flash_Loader_Demonstrator_v2.2.0_Setup.exe
2、 用交叉串口线连接开发板和电脑,
BOOT0选择为1,BOOT1选择为0,
接上开发板电源,SW1切换到ON打开电源开关。
3、 从开始程序菜单打开Flash Loader Demo程序,所有程序->STMicroelectronics->Flash
Loader Demonstrator->Flash Loader Demo
㈩ 求问stm32f103zet6 stm32f103c8t6编程方面有区别吗
两者的程序应该可以通用吧,只是头文件不同而已
识别:
Example: STM32 F 103 C 8 T 7 xxx
Device family
STM32 = ARM-based 32-bit microcontroller
Proct type
F = general-purpose
Device subfamily
103 = performance line
Pin count
T = 36 pins
C = 48 pins
R = 64 pins
V = 100 pins
Flash memory size(1)
1. Although STM32F103x6 devices are not described in this datasheet, orderable part numbers that do not
show the A internal code after temperature range code 6 or 7 should be referred to this datasheet for the
electrical characteristics. The low-density datasheet only covers STM32F103x6 devices that feature the
A code.
8 = 64 Kbytes of Flash memory
B = 128 Kbytes of Flash memory
Package
H = BGA
T = LQFP
U = VFQFPN
Temperature range
6 = Instrial temperature range, –40 to 85 °C.
7 = Instrial temperature range, –40 to 105 °C.
Options
xxx = programmed parts
TR = tape and real