一、创建STM32CUBEMX工程
芯片选择F103C8
配置定时器
打开外部时钟
配置时钟
配置PC13为output对应板子上的LED
设置堆栈大小为4K,导出
二、KEIL下的配置
将flash.c 和flash.h添加到工程中
在main.c文件中添加flash.h头文件
并定义两个变量数组
在main函数中添加以下代码
/* USER CODE BEGIN 1 */
uint8_t i;
uint8_t FlashTest[] = "Hello This is a Flash Test DEMO";
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
FlashWriteBuff( DEVICE_INFO_ADDRESS, FlashTest,sizeof(FlashTest) ); // 写入数据到Flash
for(i=0;i<255;i++)
FlashWBuff[i] = i;
FlashWriteBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest), FlashWBuff,255 ); // 写入数据到Flash
FlashReadBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest),FlashRBuff,255 ); // 从Flash中读取数
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
编译
DEBUG下选择STlink
将程序下载到单片机中
下载完成
点击进入debug,在view下打开memory1窗口
打开watch1窗口
Periodic Windows Update开启变量自动更新
将变量FlashWBuff 和 FlashRBuff加入到 Watch1
在memory1中输入要观察的地址0x800c000
运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样
定义好的句子写到了地址0x0800c000中了
三、基于片内Flash的提示音播放程序
1、获取正弦信号
点击左上角的文件,新建,音频文件,采样率2000Hz,声道单声道,位深度16位
点击效果,生成,音调
设置如下
点击文件,导出,文件
格式设置如下
完成
二、截取音乐中的音频
随便找一首音乐,点击截取一段音频
右键,点击存储选取,点击更改,配置如下
点击确定,完成
打开软件WavToC,这是一个将WAV文件转化成C语言代码的文件
点击右下角的打开文件
选择我们刚才生成的wav文件
点击生成代码,便自动生成出代码
可以点击试听,试一试是不是正确的声音,正弦波会发出嘟的声音
打开mdk文件在bsp_dac.c下的函数中,替换内容,就可以输出不同的波形。
四、参考文章
https://blog.csdn.net/qq_46467126/article/details/122098829?spm=1001.2014.3001.5501
https://blog.csdn.net/weixin_52288941/article/details/122147152?spm=1001.2014.3001.5501
版权声明:本文为CSDN博主「一晴྅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_56393108/article/details/122240501
一、创建STM32CUBEMX工程
芯片选择F103C8
配置定时器
打开外部时钟
配置时钟
配置PC13为output对应板子上的LED
设置堆栈大小为4K,导出
二、KEIL下的配置
将flash.c 和flash.h添加到工程中
在main.c文件中添加flash.h头文件
并定义两个变量数组
在main函数中添加以下代码
/* USER CODE BEGIN 1 */
uint8_t i;
uint8_t FlashTest[] = "Hello This is a Flash Test DEMO";
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
FlashWriteBuff( DEVICE_INFO_ADDRESS, FlashTest,sizeof(FlashTest) ); // 写入数据到Flash
for(i=0;i<255;i++)
FlashWBuff[i] = i;
FlashWriteBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest), FlashWBuff,255 ); // 写入数据到Flash
FlashReadBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest),FlashRBuff,255 ); // 从Flash中读取数
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
编译
DEBUG下选择STlink
将程序下载到单片机中
下载完成
点击进入debug,在view下打开memory1窗口
打开watch1窗口
Periodic Windows Update开启变量自动更新
将变量FlashWBuff 和 FlashRBuff加入到 Watch1
在memory1中输入要观察的地址0x800c000
运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样
定义好的句子写到了地址0x0800c000中了
三、基于片内Flash的提示音播放程序
1、获取正弦信号
点击左上角的文件,新建,音频文件,采样率2000Hz,声道单声道,位深度16位
点击效果,生成,音调
设置如下
点击文件,导出,文件
格式设置如下
完成
二、截取音乐中的音频
随便找一首音乐,点击截取一段音频
右键,点击存储选取,点击更改,配置如下
点击确定,完成
打开软件WavToC,这是一个将WAV文件转化成C语言代码的文件
点击右下角的打开文件
选择我们刚才生成的wav文件
点击生成代码,便自动生成出代码
可以点击试听,试一试是不是正确的声音,正弦波会发出嘟的声音
打开mdk文件在bsp_dac.c下的函数中,替换内容,就可以输出不同的波形。
四、参考文章
https://blog.csdn.net/qq_46467126/article/details/122098829?spm=1001.2014.3001.5501
https://blog.csdn.net/weixin_52288941/article/details/122147152?spm=1001.2014.3001.5501
版权声明:本文为CSDN博主「一晴྅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_56393108/article/details/122240501
暂无评论